الاستثناءات: try وexcept وfinally
التقاط الأخطاء وraise وعبارة with.
كل الدروس · دروس بايثون: تعلّم من الصفر
try و except
الاستثناء خطأ يقع أثناء تشغيل البرنامج، وإن لم تلتقطه توقف البرنامج. ضع الكود الخطِر في try واكتب في except ما يجب فعله. والتقط أدق نوع خطأ ممكن.
def safe_divide(a, b):
try:
return a / b
except ZeroDivisionError:
return None
print(safe_divide(10, 2)) # 5.0
print(safe_divide(1, 0)) # Noneelse و finally
تعمل else فقط إذا لم يقع خطأ، أما finally فتعمل في الحالتين وتناسب أعمال التنظيف مثل إغلاق ملف.
try:
value = int("42")
except ValueError:
print("not a number")
else:
print("parsed", value)
finally:
print("done")إطلاق أخطائك الخاصة
إذا تلقت الدالة قيمة سيئة فأطلق خطأً برسالة واضحة باستخدام raise. وللمزيد من الدقة يمكنك تعريف صنف خطأ خاص بك.
class NegativeAmount(Exception):
pass
def withdraw(balance, amount):
if amount < 0:
raise NegativeAmount("amount must be positive")
return balance - amount
try:
withdraw(50, -5)
except NegativeAmount as err:
print("Error:", err)- تجنّب except: المجردة فهي تخفي الأخطاء.