في الدرس السابق، تعلّمنا كيفية استخدام try وexcept لمنع توقف البرنامج عند حدوث خطأ. أما الآن، فسنتعلّم كيف نُحدّد نوع الخطأ بدقة، وكيف نستخدم الكلمة finally لتشغيل كود معين دائمًا، حتى لو حدث خطأ.
في بايثون، لكل خطأ اسم خاص يمكننا استخدامه لمعالجته بشكل محدد. من أهم هذه الأنواع:
- ValueError: يحدث عند إدخال قيمة غير صحيحة، مثل كتابة نص بدل رقم.
- ZeroDivisionError: يحدث عند محاولة القسمة على صفر.
- TypeError: يحدث عند استخدام نوع بيانات غير مناسب.
مثال على تحديد نوع الخطأ:
try:
num = int(input("Enter a number: "))
print(10 / num)
except ValueError:
print("Please enter a valid number.")
except ZeroDivisionError:
print("You can’t divide by zero!")
النتائج المحتملة:
Enter a number: hello
Please enter a valid number.
أو
Enter a number: 0
You can’t divide by zero!
أما الكلمة finally، فنستخدمها لتشغيل كود دائمًا سواء حدث خطأ أم لا:
try:
num = int(input("Enter a number: "))
print(10 / num)
except:
print("An error occurred.")
finally:
print("Program finished.")