اﻹستثنائات (Exceptions)
الاستثناءات (Exceptions)
في البرامج الحقيقية، إذا حدث خطأ برمجي أثناء تشغيل البرنامج ﻷي سبب، لا يجب أن يظهر نص الخطأ البرمجي للمستخدم ويتوقف البرنامج عن العمل! ولكننا نريد التحكم في التعامل مع الخطأ، فإذا حدث خطأ مثلاً نريد أن نُظهر رسالة للمستخدم "حدث خطأ غير متوقع" أو مثلاً إجراء أي أوامر أخرى، وهنا يأتي دور الاستثناءات.
استخدام حقيقي للاستثناءات
لنفرض أننا نقوم بكتابة برنامج مهمته فتح ملف معين والتعديل على محتواه... ولكن ماذا لو حدث خطأ؟ هناك الكثير من اﻷخطاء والمشاكل المتوقعة التي ربما تحدث في بعض اﻷحيان، ﻷن هناك عمليات ستحدث خارج إطار البرمجة، مثلاً:
- ماذا لو كان الملف غير موجود؟
- ماذا لو حدثت مشكلة أثناء فتح الملف؟
- ماذا لو ليس لنا صلاحية حفظ الملف بعد تعديله؟
في كل الحالات السابقة سيقوم المفسر بتمرير خطأ ويتوقف البرنامج، وبالتأكيد لا نريد أن يظهر للمستخدم خطأ برمجي بهذا الشكل ويتوقف البرنامج! وهنا يمكننا استخدام الاستثناءات لنقوم مثلاً بإظهار رسالة "حدثت مشكلة أثناء فتح الملف، تأكد من أن الملف موجود." وهكذا...
التحكم في الاستثناءات try.. catch
يمكننا استخدام اﻷمرين try و catch للتحكم في اﻷخطاء التي تحدث أثناء عمل البرنامج (Exceptions)
كتابة try.. catch
try{
// هنا أوامر البرنامج
}
catch (error){
// هنا اﻷوامر التي تُنفذ لو حدث خطأ
}
try: يتم وضع اﻷوامر داخل كتلةtryليتم تنفيذها بشكل طبيعي (مثلاً: فتح الملف)catch: بداخلها يتم وضع اﻷوامر التي تُنفذ فقط لو حدث خطأ (مثلاً: عرض رسالة "حدث خطأ")
مثال على try.. catch
جرب طباعة متغير غير معرّف
بالتأكيد سيظهر خطأ... ﻷننا لم نقم بتعريف (إنشاء) المتغير
console.log(test);
جرب باستخدام try.. catch
واﻵن جرب نفس المثال ولكن ضع أمر الطباعة داخل try
try{
console.log(test);
}
catch (error){
console.log("حدث خطأ");
}
ويمكن استخدام catch مباشرة بدون متغير الخطأ في حالة أنك لا تريد معرفة ما هو الخطأ الذي حدث بالضبط:
try{
console.log(test);
}
catch{
console.log("حدث خطأ");
}
التحقق من الخطأ
لاحظ أن catch تأخذ مُدخل يمكنك تسميته بأي اسم، هذا المُدخل هو عبارة عن الخطأ الذي حدث،
يمكننا استخدام متغير الخطأ error .لمعرفة اسم الخطأ (وبناءا عليه مثلاً في البرامج الحقيقية يمكن عرض رسالة مختلفة حسب نوع الخطأ)
try{
console.log(test);
}
catch (error){
console.log(error.name);
}
المثال السابق يعرض اسم (نوع) الخطأ (الاستثناء)
try{
console.log(test);
}
catch (error){
console.log(error.message);
}
المثال السابق يعرض رسالة المفسّر عن الخطأ
غالباً يختصر المبرمجون اسم متغير الخطأ حيث يقوموا بتسمية المتغير err أو e.
المساهمين
وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github
