English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المثال، سنتعلم إنشاء استثناءات مخصصة مكتشفة ومتقدمة في Java.
لفهم هذا المثال، يجب أن تكون على علم بما يليبرمجة Javaالموضوع:
import java.util.ArrayList; import java.util.Arrays; //إنشاء فئة استثناء فحص مخصص class CustomException extends Exception { public CustomException(String message) { //دعوة مكون بناء استثناء Exception super(message); } } class Main { ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript")); //تحقق من الاستثناء public void checkLanguage(String language) throws CustomException { //إذا كان language موجودًا بالفعل في ArrayList، أتلف استثناء if(languages.contains(language)) { throw new CustomException(اللغة + " موجودة مسبقًا"); } else { //إدراج language في ArrayList languages.add(language); System.out.println(اللغة + " أضيفت إلى ArrayList"); } } public static void main(String[] args) { //إنشاء عميل فئة Main Main obj = new Main(); //معالجة الاستثناء باستخدام try...catch try { obj.checkLanguage("Swift"); obj.checkLanguage("Java"); } catch(CustomException e) { System.out.println("[" + e + "]) يحدث استثناء; } } }
نتائج الإخراج
Swift أضيفت إلى ArrayList [CustomException: Java already exists] حدث استثناء
في المثال السابق، قمنا بتوسيع استثناء Exception لإنشاء استثناء مخصص يُدعى CustomException. هنا، نستخدم كلمة المفتاح super() لتكليف مكون بناء استثناء Exception من دالة بناء CustomException.
في دالة checkLanguage()، قمنا بالتحقق من الحالات الاستثنائية، وإذا حدث استثناء، فإن دالة try..catch ستتعامل مع الاستثناء.
في هذا السياق، هذا هو الاستثناء المُتحقق منه. يمكننا أيضًا إنشاء استثناء غير معدين في Java. للحصول على معلومات إضافية حول الاستثناءات المعدينة وغير المعدينة، يُرجى زيارةاستثناءات Java.
import java.util.ArrayList; import java.util.Arrays; //إنشاء استثناء غير معدين class CustomException extends RuntimeException { public CustomException(String message) { //دعوة مكون بناء RuntimeException super(message); } } class Main { ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript")); //تحقق من الحالات الاستثنائية public void checkLanguage(String language) { //إذا كانت اللغة موجودة في ArrayList، فتُتعرض إلى استثناء if(languages.contains(language)) { throw new CustomException(اللغة + " موجودة مسبقًا"); } else { //إدراج لغة البرمجة في ArrayList languages.add(language); System.out.println(اللغة + " أضيفت إلى ArrayList"); } } public static void main(String[] args) { //إنشاء عنصر للفئة Main Main obj = new Main(); //تحقق من وجود لغة البرمجة obj.checkLanguage("Swift"); obj.checkLanguage("Java"); } }
نتائج الإخراج
Swift تمت إضافتها إلى ArrayList Exception in thread "main" CustomException: Java already exists at Main.checkLanguage(Main.java:21) at Main.main(Main.java:37)
في المثال السابق، قمنا بتوسيع فئة RuntimeException لإنشاء فئة استثناء مخصص غير مفحوص.
في هذا السياق، قد لاحظت أننا لم نعلن عن أيtry ... catchالمقطع. هذا لأن الاستثناءات غير المفحوصة يتم فحصها أثناء التشغيل.
إلى جانب ذلك، جميع الوظائف الأخرى غير الاستثناءات غير المفحوصة تشبه البرنامج المذكور أعلاه.