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

معالجة الأخطاء: مقدمة عن الاستثناءات (المفروضة مقابل غير المفروضة)

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

الدرس 33: معالجة الأخطاء: مقدمة عن الاستثناءات

الـ استثناء (Exception) هو حدث يقع أثناء تنفيذ البرنامج ويؤدي إلى تعطيل التدفق الطبيعي للتعليمات. توفر Java آلية قوية لمعالجة هذه الأخطاء.

تسلسل الاستثناءات

جميع الاستثناءات والأخطاء هي فئات فرعية من فئة Throwable.

  1. الخطأ (Error): يمثل مشكلات خطيرة (مثل OutOfMemoryError). هذه عادةً لا يمكن تداركها ويجب ألا يتم التقاطها بواسطة التطبيق.
  2. الاستثناء (Exception): يمثل ظروفاً قد يرغب التطبيق في التقاطها ومعالجتها.

الاستثناءات المفروضة (Checked) مقابل غير المفروضة (Unchecked)

يتم تصنيف استثناءات Java إلى نوعين، بناءً على ما إذا كان المترجم يجبرك على معالجتها.

1. الاستثناءات المفروضة (Checked Exceptions)

  • يجبرك المترجم إما على معالجتها (باستخدام try-catch) أو التصريح عنها (باستخدام throws).
  • تمثل عادةً مشكلات خارجية يمكن تداركها (مثل ملف غير موجود، مشكلات الشبكة).
  • أمثلة: IOException, SQLException.

2. الاستثناءات غير المفروضة (Unchecked Exceptions / Runtime Exceptions)

  • لا يجبرك المترجم على معالجتها.
  • تنتج عادةً عن أخطاء برمجية أو عيوب منطقية (مثل محاولة الوصول إلى فهرس غير صالح).
  • أمثلة: NullPointerException, ArrayIndexOutOfBoundsException.

java // مثال على استثناء غير مفروض (خطأ برمي) int result = 10 / 0; // ArithmeticException

// مثال على استثناء مفروض (يتطلب معالجة) // Thread.sleep(1000); // خطأ تجميع بدون try/catch أو throws

هدف معالجة الاستثناءات: إدارة المواقف غير المتوقعة بأمان، ومنع انهيار التطبيق، وتقديم ملاحظات مفيدة.