NahdaAIنهضة
Python • المستوى الثاني • الدرس 4

معالجة الأخطاء والاستثناءات (Try / Except)

العودة لفهرس المستوى

أهداف الدرس العلمية

  • حماية التطبيق من التوقف بـ try و except عند وقوع أخطاء مفاجئة.
  • اعتراض أنواع متعددة من الأخطاء: ZeroDivisionError, ValueError, FileNotFoundError.
  • استخدام كتلة finally لتنفيذ كود التنظيف دائماً.
  • استخدام كتلة else لتنفيذ كود عند عدم حدوث أي خطأ.

1. هيكل معالجة الاستثناءات الكامل

تتيح لك كتل الاستثناءات اعتراض الأخطاء الشائعة ومعالجتها بأمان بدون إغلاق البرنامج. الهيكل الكامل يشمل أربع كتل: try (الكود المحمي)، except (المعالجة)، else (عند النجاح)، finally (يُنفَّذ دائماً).

python
try:
    # 🔒 كود قد يسبب خطأ
    result = 10 / 0
except ZeroDivisionError:
    # 🛡️ معالجة الخطأ المتوقع
    print("لا يمكن القسمة على صفر!")
except Exception as e:
    # 🎯 معالجة أي خطأ آخر
    print(f"خطأ: {e}")
else:
    # ✅ يُنفَّذ عند عدم حدوث خطأ
    print("النتيجة:", result)
finally:
    # 🔄 يُنفَّذ دائماً
    print("انتهى التنفيذ")

2. أشهر أنواع الاستثناءات في Python

🔴 ZeroDivisionError

عند محاولة القسمة على صفر: 10 / 0

⚠️ ValueError

عند تحويل نص غير رقمي: int("abc")

📁 FileNotFoundError

عند محاولة فتح ملف غير موجود.

🔢 IndexError

عند الوصول لمؤشر خارج نطاق القائمة.

التطبيق العملي المباشر

تحدي الدرس الرابع: نظام معالجة أخطاء متكامل

قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:

  1. أنشئ دالة parse_and_divide(a_str, b_str) تقبل نصين وتحوّلهما لـ int ثم تقسمهما.
  2. عالج داخلها ValueError (عند نص غير رقمي) و ZeroDivisionError (عند القسمة على صفر).
  3. استخدم finally داخل دالة safe_file_read لطباعة رسالة انتهاء المحاولة دائماً.
  4. استخدم else داخل دالة divide_with_else لإرجاع النتيجة عند النجاح فقط.
  5. طبّق جميع الدوال الثلاث على حالات نجاح وفشل باستخدام print().
⏳ جارٍ تحميل المحرر التفاعلي...