English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

هل يمكن إنشاء استثناء مخصص في Java دون التوسع في فئة Exception؟

الاستثناءات هي المشاكل التي تحدث أثناء تنفيذ البرنامج (أخطاء تشغيلية). عند حدوث استثناء، يُتوقف البرنامج فجأة، وسيتم تجاهل الكود الذي يأتي بعد السطر الذي تم فيه إنشاء الاستثناء.

استثناءات المستخدم

يمكنك استخدام Java لإنشاء استثناءات خاصة بك، وتسمى هذه الاستثناءات استثناءات مستخدمين أو استثناءات مخصصة.

  • يجب أن تكون جميع الاستثناءات فرعًا من Throwable.

  • إذا كنت ترغب في كتابة استثناءات تم تنفيذها تلقائيًا بواسطة Handle أو Delare Rule، فإنه يجب توسيعهاExceptionالصف

  • إذا كنت تريد كتابة استثناء Runtime، فإنه يجب توسيعRuntimeExceptionالصف

هل يجب توسيع استثناء Exception

لا، ليس من الضروري توسيع استثناء Exception لإنشاء استثناء مخصص، يمكنك إنشاؤها عن طريق توسيع استثناء Throwable (السلف المشترك لجميع الاستثناءات).

مثال

في هذا المثال من Java، يتم إنشاء استثناء مخصص يسمى AgeDoesnotMatchException، ويحدد هذا الاستثناء منع استخدام العمر بين 17 و 24 سنة. هنا، يتم إنشاؤه دون توسيع استثناء Exception.

import java.util.Scanner;
class AgeDoesnotMatchException extends Throwable{
   AgeDoesnotMatchException(String msg){
      super(msg);
   }
}
public class CustomException{
   private String name;
   private int age;
   public CustomException(String name, int age){
      try {
         if (age<17||age>24) {
            String msg = "عمر ليس بين 17 و 24";
            AgeDoesnotMatchException ex = new AgeDoesnotMatchException(msg);
            throw ex;
         }
      }catch(AgeDoesnotMatchException e) {
         e.printStackTrace();
      }
      this.name = name;
      this.age = age;
   }
   public void display(){
      System.out.println("اسم الطالب: "+this.name );
      System.out.println("عمر الطالب: "+this.age );
   }
   public static void main(String args[]) {
      Scanner sc= new Scanner(System.in);
      System.out.println("ادخل اسم الطالب: ");
      String name = sc.next();
      System.out.println("ادخل عمر الطالب، يجب أن يكون بين 17 و 24 (بما في ذلك 17 و 24): ");
      int age = sc.nextInt();
      CustomException obj = new CustomException(name, age);
      obj.display();
   }
}

نتيجة الخروج

ادخل اسم الطالب:
Krishna
ادخل عمر الطالب، يجب أن يكون بين 17 و 24 (بما في ذلك 17 و 24):
30
july_set3.AgeDoesnotMatchException: العمر ليس بين 17 و 24
اسم الطالب: Krishna
عمر الطالب: 30
في july_set3.CustomException.<init>(CustomException.java:17)
في july_set3.CustomException.main(CustomException.java:36)
سيحبك هذا