فئة فرعية استثناء في الاستثناء
في الحزمة القياسية java.lang ، تحدد Java العديد من فئات الاستثناءات. تم استخدام بعض هذه في الأمثلة السابقة. هذه الاستثناءات هي بشكل عام فئات فرعية من الفئة القياسية RunTimeException. نظرًا لأن Java.lang يتم تقديمه بالفعل بواسطة جميع برامج Java ، فإن معظم الاستثناءات المستمدة من RunTimeException متوفرة تلقائيًا. أيضا ، لا تحتاج إلى إدراج في قائمة رميات أي طريقة. في جافا ، يسمى هذا استثناء غير محدد. لأن المترجم لا يتحقق منه لمعرفة ما إذا كان الطريقة تتعامل مع هذه الاستثناءات أو يرميها. يتم سرد الاستثناءات غير المحددة في Java.lang في الجدول 1. يسرد الجدول 2 الاستثناءات التي يجب تضمينها في قائمة الرميات بالطرق المحددة بواسطة java.lang ، إذا كانت هذه الطرق يمكن أن تنشئ أحد الاستثناءات ولكن لا يمكنها التعامل معها بمفردها. وتسمى هذه الاستثناءات التي تم فحصها. تحدد Java العديد من أنواع الاستثناءات الأخرى المتعلقة بفئات المكتبة المختلفة.
الجدول 1: استثناء غير مرتاح ، فئة فرعية محددة في java.lang في جافا
الجدول 2: تحقق من الاستثناء المحدد في java.lang
قم بإنشاء فئة فرعية استثناء باستخدام Java
على الرغم من أن الاستثناءات المدمجة في Java تتعامل مع أكثر الأخطاء الشائعة ، إلا أنك قد ترغب في إنشاء نوع الاستثناء الخاص بك للتعامل مع الحالات الخاصة التي تطبقها. هذا بسيط للغاية: فقط حدد الفئة الفرعية من الاستثناء (الاستثناء بالطبع فئة فرعية من الرمي). لا تحتاج فئاتك الفرعية إلى فعل أي شيء فعليًا - يتيح لك وجودها في نظام النوع استخدامها كاستثناءات.
فئة الاستثناء نفسها لا تحدد أي طريقة. بالطبع ، يرث بعض الأساليب التي توفرها رمي. لذلك ، يمكن لجميع الاستثناءات ، بما في ذلك تلك التي تنشئها ، الحصول على طريقة محددة قابلة للتسمية. يتم عرض هذه الطرق في الجدول 3. يمكنك أيضًا تجاوز واحدة أو أكثر من هذه الطرق في فئة الاستثناء التي تنشئها.
الجدول 3 طرق محددة عن طريق الرمي
يعلن المثال التالي عن فئة فرعية جديدة من الاستثناء ، والتي يتم استخدامها بعد ذلك كإشارة لخطأ في الطريقة. إنه يحمل طريقة TOSTRING () ، بحيث يمكن عرض وصف الاستثناء باستخدام println ().
// يقوم هذا البرنامج بإنشاء نوع استثناء مخصص. } Class DescentionDemo {static void compute (int a) myException {system.out.println ("compute (" + a + ") ؛ .println ("الخروج العادي") ؛ هـ) ؛
يحدد هذا المثال فئة فرعية من الاستثناء MyException. هذه الفئة الفرعية بسيطة للغاية: فهي تحتوي فقط على مُنشئ وطريقة ToString () التي تعرض القيم المتطرفة. تحدد فئة الاستثناء DESTEMO طريقة compute (). هذه الطريقة ترمي كائن MyException. يتم رفع هذا الاستثناء عندما تكون معلمة عدد صحيح من compute () أكبر من 10.
تقوم الطريقة الرئيسية () بإعداد معالج استثناء لـ MyException ، ثم يستدعي Compute () بقيمة قانونية وقيمة غير قانونية لعرض مسارات التنفيذ المختلفة من خلال الكود. ها هي النتائج:
تسمى COMPUTE (1) COMBUTE COMPUTE (20) اشتعلت MyException [20]