برمجة

الاستثناءات: 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))    # None

else و 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: المجردة فهي تخفي الأخطاء.

المؤلف: Nibras Code