معالجة الأخطاء في Python (try / except)
10:00 دقائق
مجاني
في هذا الدرس ستتعلم كيف تتعامل مع الأخطاء باستخدام try و except حتى لا يتوقف برنامجك فجأة
أحيانًا يواجه برنامجك خطأ (Error) بسبب إدخال المستخدم أو ملف غير موجود أو قسمة على صفر. إذا لم نعالج الخطأ، سيتوقف البرنامج فورًا. في Python نستخدم try / except حتى نستمر بشكل آمن.
مثال على خطأ شائع
إذا حاولنا تحويل نص إلى رقم بدون تحقق، سيظهر خطأ:
age = int(input("اكتب عمرك: "))
print(age)
إذا كتب المستخدم كلمة بدل رقم، البرنامج سيتوقف.
استخدام try و except
try:
age = int(input("اكتب عمرك: "))
print("عمرك هو:", age)
except:
print("خطأ: لازم تكتب رقم فقط")
إذا حدث خطأ داخل try، ينتقل التنفيذ إلى except بدل إيقاف البرنامج.
مثال: القسمة على صفر
try:
x = int(input("اكتب رقم: "))
y = int(input("اكتب رقم آخر: "))
print(x / y)
except:
print("خطأ: لا يمكن القسمة على صفر أو إدخال غير صحيح")
تحديد نوع الخطأ (أفضل)
الأفضل أن تحدد نوع الخطأ بدل except العام:
try:
age = int(input("اكتب عمرك: "))
print(age)
except ValueError:
print("خطأ: أدخل رقم صحيح")
هنا نعالج خطأ التحويل فقط (ValueError).
استخدام else مع try
كتلة else تعمل فقط إذا لم يحدث أي خطأ.
try:
x = int(input("اكتب رقم: "))
except ValueError:
print("خطأ: أدخل رقم")
else:
print("نجاح! الرقم هو:", x)
استخدام finally
كتلة finally تعمل دائمًا سواء حدث خطأ أو لا.
مفيدة لإغلاق الملفات أو تنظيف الموارد.
file = None
try:
file = open("data.txt", "r")
print(file.read())
except FileNotFoundError:
print("الملف غير موجود")
finally:
if file:
file.close()
أخطاء شائعة
- استخدام except بدون فهم (يصير يخفي أخطاء مهمة)
- كتابة كود كبير جدًا داخل try بدل تحديد الجزء الخطر فقط
- نسيان معالجة الأخطاء المتوقعة مثل FileNotFoundError
تمرين للتطبيق
اكتب برنامج:
- يسأل المستخدم عن رقمين
- يقسم الأول على الثاني
- يعالج خطأ إدخال نص أو القسمة على صفر
ماذا بعد هذا الدرس؟
الدرس القادم: مشروع تطبيقي بسيط
سنطبق ما تعلمناه في برنامج صغير يجمع المتغيرات + الشروط + الحلقات + الدوال.