مثل لغة Java ، يمكن لـ JavaScript رمي الاستثناءات من خلال عبارات الرمي. على عكس لغة Java ، يمكن لـ JavaScript رمي جميع أنواع القيم من خلال عبارات الرمي ، وليس فقط لرمي كائنات الخطأ.
نسخة الكود كما يلي:
// رمي كائن خطأ.
يحاول{
رمي خطأ جديد ("رسالة في كائن الخطأ") ؛
} catch (e) {
console.log (e) ؛ // error: رسالة في كائن الخطأ
}
يحاول{
رمي "رسالة خام" ؛
} catch (message) {
console.log (message) ؛ // message
console.log (typeof message) ؛ // string
}
يحاول{
رمي 42 ؛
} catch (code) {
console.log (رمز) ؛ // 42
console.log (typeof code) ؛ // number
}
مثل لغة Java ، إذا لم يتم اكتشاف الاستثناء من قبل أي بيان الصيد ، فسيتم طرح الاستثناء في النهاية على المستخدم:
نسخة الكود كما يلي:
يحاول{
// رمي خطأ جديد ("خطأ الاختبار") ؛ // سيتم إلقاء الخطأ. خطأ: خطأ في الاختبار
} أخيراً{
}
يحاول{
رمي 42 ؛ // سيتم إلقاء الخطأ. خطأ: 42
} أخيراً{
}
للحصول على استثناءات رمي الصيد ، تستخدم JavaScript أيضًا عبارات Try/Catch/أخيرًا. قواعد الاستخدام هي: المحاولة مطلوبة ، والقبض ، وأخيرا هي بيانات اختيارية ، ولكن على الأقل واحد من الصيد ويجب أن تظهر في النهاية.
في بيان الصيد ، يمكن تعريف المعلمة E (أو أي اسم متغير قانوني آخر) لتخزين القيم المتطرفة التي تم إلقاؤها. داخل بيان الصيد ، يمكن استخدام هذه المعلمة كمتغير محلي. على عكس الاستخدام المتغير الآخر في JavaScript ، فإن متغيرات المعلمات في عبارات الصيد صالحة فقط داخل بيان الصيد (يقتصر نطاق هذا المتغير على بيان الصيد).
بالنسبة لبيانات أخيرًا ، سيتم تنفيذ الرمز في النهاية بغض النظر عما إذا كان هناك استثناء تم إلقاؤه في المحاولة. تشمل التفاصيل:
1. لا يوجد استثناء يحدث في المحاولة. عند تنفيذ بيان المحاولة ، سيتم تنفيذ الرمز في النهاية.
2. لا يوجد استثناء يحدث في المحاولة ، ولكن عندما يتم الخروج من رمز المحاولة بسبب تنفيذ بيانات الفاصل أو المتابعة أو الإرجاع ، سيتم تنفيذ الكود في النهاية.
3. يحدث استثناء في المحاولة. بعد معالجة الاستثناء من خلال بيان الصيد ، يتم تنفيذ الرمز في النهاية.
4. يحدث استثناء في المحاولة ، ولكن عندما يجب استمرار الاستثناء بسبب عدم وجود بيان الصيد ، سيتم تنفيذ الكود في النهاية. تجدر الإشارة إلى أنه في الحالة التي يكون فيها بيان الصيد مفقودًا ، ستقوم JavaScript أولاً بتنفيذ الرمز في النهاية ، ثم تستمر في إلقاء استثناء لأعلى.
في رمز أخيرًا ، في حالة ظهور عبارات الفاصل أو المتابعة أو الإرجاع ، ستقوم JavaScript بتنفيذ هذه العبارات مباشرة ، وتجاهل عبارات الاستراحة ، أو متابعة أو إرجاع البيانات التي قد تكون موجودة في رمز المحاولة ؛ حتى إذا كان بيان الصيد مفقودًا ، مما يؤدي إلى استثناء يجب الإبلاغ عنه ، فسوف يتجاهل JS معلومات الإبلاغ عن الاستثناء وتواصل تنفيذ بيانات الاستراحة أو الاستمرار أو الإرجاع في رمز أخيرًا. وبالمثل ، إذا تم إلقاء استثناء في الرمز أخيرًا ، فسوف يتجاهل JavaScript جميع عبارات الاستراحة أو متابعة أو إرجاع في رمز المحاولة ، وأيضًا تجاهل سلوك الإبلاغ الاستثناء المحتمل ، ويلمي فقط الاستثناءات في الكود أخيرًا.