اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

مرحبًا،

الجملة throw تستعمل لرمي الأخطاء، أي لإيقاف التنفيذ الحالي و الإعلان عن حدوث خطأ.

مثلًا في حال كنت تستعمل تابع في مكتبة ما يقوم بتحميل صورة من القرص الصلب، و قمت بإعطاء هذا التابع مسار الصورة و لم يجد التابع أي صورة في المسار الذي أعطيته إياه، عندها سيقوم برمي خطأ عن طريق throw لإخبارك أن الصورة غير موجودة في المسار المعطى.

بالطبع هذا مثال بسيط و لكن تستعمل هذه التعليمة في كافة المكتبات في كل مكان حتى يصبح أسهل على المستخدم معرفة سبب الخطأ.

يمكنك حتى القيام بذلك بنفسك، مثلًا في حال قمت بكتابة تابع يقوم بأخذ عمر شخص و يقوم بإعادة تصنيف هذا الشخص (طفل، بالغ، كهل)، هنا يجب عليك اختبار فيما إذا كانت القيمة المعطاة أصغر أو تساوي الصفر لأنها حالة غير ممكنة و لا تريد من المستخدم للتابع الذي قمت بكتابته أن يقوم بتمرير قيمة كهذه، فتستعمل if لاختبار الحالات الممنوعة و عندها تقوم باستعمال throw لإخبار المستخدم للتابع الخاص بك أن هناك خطأ. مثلًا في جافا سكربت يكون ذلك كما يلي:

function f(age){
    if (age <= 0) {
        throw new Error('`age` must be larger than 0');
    }
  ...
}

هنا ال 3 نقاط فقط لاختصار الجزء غير المهم من التابع حيث المهم توضيح فكرة ال throw.

تحياتي.

  • 0
نشر

التعبير البرمجي throw يؤدي إلى رمي استثناء (exception) يُعرِّفه المستخدم، وسيؤدي ذلك إلى توقف تنفيذ الدالة الحالية (أي أنَّ التعابير البرمجية بعد throw لن تُنفَّذ) وسينتقل التنفيذ إلى أوّل catch، وإذا لم تكن موجودةً فسينتهي تنفيذ البرنامج.

والبنية العامة هي:

throw expression;

الاستثناء (exception) يُمكن أن يكون قيمة نصيه (string) أو قيمه رقميه (number) أو قيمه منطقيه (boolean) أو كائن (object) كما هو موضح في الامثله التاليه:

throw "string"; // قيمة نصيه
throw 500; // قيمة رقميه        
throw false; // قيمة منطقيه     
throw person; // كائن    

إليك أمثله:

// هذا مثال بإستخدام try/catch
try {
  dadalert("Hello, World!");
}
catch (err) {
  throw new Error(err);
}
// في المثال سيقوم برمي خطأ في الكونسول لأن هناك خطأ بناء الجمله في البلوك الأول غير صحيح 

// مثال اخر أنه في حال عدم تحقق شرط مُعين نرمي إستثناء وهو عبارة عن خطأ مثلا أو أياً يكن
let strValue = 100
if (typeof strValue === 'string') {
	console.log('Good, The Type of The Value Is String')
} else {
	throw new Error('The Type Of The Value Must be String!')
}
// في المثال السابق نتحقق من نوع قيمة معينه هل هي نصيه أم لا, لو كانت القيمه نصيه نطبع في الكونسول رساله أما لو كانت القيمه أي نوع بيانات أخر نرمي خطأ

يمكنك الإطلاع علي هذا المقالات لزيادة معلوماتك

https://wiki.hsoub.com/JavaScript/throw

https://wiki.hsoub.com/JavaScript/try...catch

بالتوفيق.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...