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
عند الوصول لمؤشر خارج نطاق القائمة.
التطبيق العملي المباشر
تحدي الدرس الرابع: نظام معالجة أخطاء متكامل
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- أنشئ دالة
parse_and_divide(a_str, b_str)تقبل نصين وتحوّلهما لـintثم تقسمهما. - عالج داخلها
ValueError(عند نص غير رقمي) وZeroDivisionError(عند القسمة على صفر). - استخدم
finallyداخل دالةsafe_file_readلطباعة رسالة انتهاء المحاولة دائماً. - استخدم
elseداخل دالةdivide_with_elseلإرجاع النتيجة عند النجاح فقط. - طبّق جميع الدوال الثلاث على حالات نجاح وفشل باستخدام
print().
⏳ جارٍ تحميل المحرر التفاعلي...