سؤال
واجهت مشكلة اليوم. في الكود التالي ، عندما يتم طرح استثناء وقت التشغيل ، هل سيظل الرمز اللاحق ينفذ؟ هل أحتاج إلى إضافة عبارة return بعد الاستثناء؟
void public add (int index ، e element) {if (size> = elements.length) {رمي new RunTimeException ("جدول الطلبات ممتلئ ، لا يمكن إضافة") ؛ //يعود؛ // هل هو ضروري؟ } ....}
للإجابة على هذا السؤال ، كتبت بضع أجزاء من التعليمات البرمجية لاختباره ، والنتائج هي كما يلي:
// Code 1Public Static Void Test () يلقي الاستثناء {رمي استثناء جديد ("المعلمة خارج الحدود") ؛ System.out.println ("بعد الاستثناء") ؛ // خطأ في التجميع ، "بيان غير قابل للوصول"} // code 2try {rems required ("parameter out of bounds") ؛ } catch (استثناء e) {e.printstacktrace () ؛} system.out.println ("بعد الاستثناء") ؛ // يمكن تنفيذها // code 3if (true) {rems requision new ("parameter out of bitters") ؛ } system.out.println ("بعد استثناء") ؛ // يتم إلقاء الاستثناء ، ولن يتم تنفيذهاتلخيص:
إذا تم إلقاء استثناء قبل قطعة من الرمز ولم يتم اكتشاف الاستثناء ، فسيقوم هذا الكود بإنشاء خطأ في وقت الترجمة "بيان لا يمكن الوصول إليه". كرمز 1
إذا تم إلقاء استثناء قبل قطعة رمز ، ويتم اكتشاف هذا الاستثناء من خلال try...catch إذا لم يتم إلقاء استثناء جديد في بيان catch في هذا الوقت ، فيمكن تنفيذ الكود ، وإلا ، مثل المادة 1. مثل الكود 2
إذا تم إلقاء استثناء في بيان مشروط ، فيمكن تجميع البرنامج ، ولكن لن يتم تنفيذ البيانات اللاحقة. كرمز 3
يلخص أيضًا الفرق بين استثناء وقت التشغيل والاستثناء غير المحدد:
استثناءات وقت التشغيل هي استثناءات من فئة RuntimeException ودراسيها الفرعية ، وهي استثناءات غير محسوبة ، مثل NullPointerException ، IndexOutOfBoundsException ، وما إلى ذلك ، لأن هذه الاستثناءات هي إما استثناءات النظام ولا يمكن التعامل معها ، مثل مشاكل الشبكة ؛
إما أنه خطأ منطقي في البرنامج ، مثل استثناء مؤشر فارغ ؛ يجب أن يتوقف JVM عن تشغيل هذا الخطأ ، بحيث يمكن التعامل مع استثناء وقت التشغيل دون معالجته (الصيد أو التخلص من ذلك ، بالطبع ، يمكن معالجته أيضًا) ويتعامل JVM معه. سيقوم Java Runtime تلقائيًا catch على RuntimeException throw البرنامج ، ثم أوقف الخيط وطباعة الاستثناء.
الاستثناءات غير المحددة هي استثناءات غير RuntimeException . انهم جميعا ينتمون إلى فئة Exception والفئات الفرعية الخاصة بها ، ويتم فحصها. يجب معالجة الاستثناءات غير المحددة (التقاط أو رمي) وإذا لم تتم معالجتها ، فسيكون للبرنامج خطأ في الترجمة. بشكل عام ، Exception المكتوب في واجهة برمجة التطبيقات أن throws ليست عبارة RuntimeException .
استثناءات وقت التشغيل المشتركة:
استثناءات شائعة غير ذاترة:
حسنًا ، ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة في دراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.