معالجة الاستثناءات في Java: كشف الغموض
في سيناريو محير لمعالجة استثناءات Java، قدم سؤال جامعي مقتطف التعليمات البرمجية التالي:
// Exception Heirarchy
class MyExc1 extends Exception {}
class MyExc2 extends Exception {}
class MyExc3 extends MyExc2 {}
// Main Class
public class C1 {
public static void main(String[] args) throws Exception {
try {
System.out.print(1);
q();
}
catch (Exception i) {
throw new MyExc2();
}
finally {
System.out.print(2);
throw new MyExc1();
}
}
static void q() throws Exception {
try {
throw new MyExc1();
}
catch (Exception y) {
}
finally {
System.out.print(3);
throw new Exception();
}
}
}
السؤال المطروح حول مخرجاته، وكانت الإجابة المقدمة هي "13Exception في سلسلة المحادثات الرئيسية MyExc2". ومع ذلك، الإجابة الصحيحة هي "132Exception في الموضوع الرئيسي MyExc1".
توضيح الغموض
لفك هذا اللغز، من الضروري فهم أسبقية الاستثناءات:
العواقب :
استعادة التنفيذ
تطبيق هذا المبدأ على الكود:: السطر 13: يتم طرح MyExc1 في كتلة محاولة q ().
السطر 19: تم طرح MyExc2 في كتلة الالتقاط الرئيسية ().
السطر 15 : تم تنفيذ السطر 15 (المطبوعات 2).
السطر 16: تم طرح MyExc1 في الكتلة النهائية للـ main().السطر 23: تم طرح الاستثناء في الكتلة النهائية للـ main ().
السطر 23: الاستثناء يجهض نشر MyExc1.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3