العودة إلى الدورة

كتل Try-Catch-Finally والاستثناءات المخصصة

إتقان لغة Java: من الصفر إلى مطور محترف (رحلة من 50 درساً)

الدرس 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); } }