الدرس 34: كتل Try-Catch-Finally والاستثناءات المخصصة
1. آلية try-catch-finally
كتلة try
تحتوي على الكود الذي قد يتسبب في إطلاق استثناء.
كتلة catch
يتم تنفيذها إذا وقع استثناء من النوع المحدد في كتلة try . تحتوي على منطق التعافي أو الإبلاغ عن الخطأ.
كتلة finally
يتم تنفيذها دائماً، بغض النظر عما إذا كان قد تم إطلاق استثناء أو التقاطه. تُستخدم غالباً لمهام التنظيف (مثل إغلاق تدفقات الملفات).
java public void divide(int numerator, int denominator) { try { int result = numerator / denominator; System.out.println("Result: " + result); } catch (ArithmeticException e) { System.err.println("Error: Cannot divide by zero."); } finally { System.out.println("Division attempt completed."); } }
التقاط استثناءات متعددة (Multi-catch)
منذ Java 7، يمكنك التقاط أنواع متعددة من الاستثناءات في كتلة catch واحدة إذا كان منطق المعالجة متطابقاً.
java catch (IOException | SQLException e) { System.err.println("An error occurred."); }
2. إنشاء استثناءات مخصصة
إذا كانت استثناءات Java المدمجة لا تصف الخطأ بدقة، يمكنك تحديد استثناءاتك الخاصة.
- لإنشاء استثناء مفروض (Checked)، قم بتوسيع فئة
Exception. - لإنشاء استثناء غير مفروض (Unchecked)، قم بتوسيع فئة
RuntimeException.
java public class InsufficientFundsException extends Exception { public InsufficientFundsException(String message) { super(message); } }