سؤال

أنا في حيرة من نقطة غامضة في تعريف والأثر المحتمل لل 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{
    ...
    }
هل كانت مفيدة؟

المحلول

المواصفات تقول:

استثناءات التطبيقات التي تم التحقق منها يمكن تعريف الاستثناءات على هذا النحو من خلال إدراجها في جمل الرميات الخاصة بأساليب واجهة عمل الفول ، وعرض عدم الواجهة ، والواجهة الرئيسية ، وواجهة المكونات ، ونقطة نهاية خدمة الويب.يتم تعريف استثناء أبليكاتيون الذي هو استثناء لم يتم التحقق منه كاستثناء التطبيق عن طريق التعليق التوضيحي مع أبليكاتيونكسيبتيون البيانات الوصفية الشرح ، أو تدل عليه في واصف النشر مع عنصر استثناء التطبيق.

لذا ، فإن الفئة أعلاه هي استثناء للتطبيق ، لأنه استثناء محدد.وبالطبع يجب أن يتم سردها في بند الرميات في طريقتك ، وإلا فلن يتم تجميع الكود.ولا ، لن يتم تجاهل مثيل الفول بعد طرح هذا الاستثناء ، وفقا للمواصفات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top