استثناء النظام أو استثناء التطبيق
سؤال
أنا في حيرة من نقطة غامضة في تعريف والأثر المحتمل لل Application Exceptions
و System Exceptions
في EJB
.على وجه الخصوص لا أستطيع معرفة ما إذا كان الاستثناء المحدد على النحو التالي:
public class SomeException extends Exception{
...
}
سوف يكون Application
أو System Exception
.وفقا للمواصفات و Application Exception
يجب دائما تعريفها مع التعليق التوضيحي @ApplicationException
.أستنتج بالتالي أن الطبقة المذكورة أعلاه ليست Application Exception
على الرغم من أنه استثناء محدد.أسئلتي الخروج تتعلق بناء الجملة جافا الصحيح وبعد ذلك إلى سلوك EJB Container
في حالة هذا Exception
هو أن يتم طرح ضمن أسلوب عمل من Session Bean
(ليس Singleton
على الرغم من):
@Stateless
@LocalBean
public class StatelessBean{
public void doStuff(){
throw new SomeException();
}
}
1) يجب على SomeException
يتم الإعلان عنها في بند الرمي?
2) هل Container
يتجاهل المثيل بعد الطريقة doStuff()
يسمى?
3) إذا كان أخيرا Sytem Exception
هل افتراضي صحيح ، أن أ System Exception
يمكن أن يكون فحص وليس RuntimeException
?
تحديث:
في رأيي ، ليس من الواضح بالتأكيد وفقا للمواصفات أن الاستثناء المحدد يجب أن يكون دائما Application Exception
.ماذا لو كان أحد من شأنه أن يحدد فحص RuntimeException
?ينبغي أن تدرج في throw
من طريقة?هل هو System
أو Application Exception
?
public class SomeException extends RuntimeException{
...
}
المحلول
المواصفات تقول:
استثناءات التطبيقات التي تم التحقق منها يمكن تعريف الاستثناءات على هذا النحو من خلال إدراجها في جمل الرميات الخاصة بأساليب واجهة عمل الفول ، وعرض عدم الواجهة ، والواجهة الرئيسية ، وواجهة المكونات ، ونقطة نهاية خدمة الويب.يتم تعريف استثناء أبليكاتيون الذي هو استثناء لم يتم التحقق منه كاستثناء التطبيق عن طريق التعليق التوضيحي مع أبليكاتيونكسيبتيون البيانات الوصفية الشرح ، أو تدل عليه في واصف النشر مع عنصر استثناء التطبيق.
لذا ، فإن الفئة أعلاه هي استثناء للتطبيق ، لأنه استثناء محدد.وبالطبع يجب أن يتم سردها في بند الرميات في طريقتك ، وإلا فلن يتم تجميع الكود.ولا ، لن يتم تجاهل مثيل الفول بعد طرح هذا الاستثناء ، وفقا للمواصفات.