مدیریت استثناها در پایتون

try، except، finally، raise و ساخت استثنای سفارشی در پایتون

استثنا (Exception) چیست؟

استثنا خطایی است که هنگام اجرای برنامه رخ می‌دهد و اگر مدیریت نشود، برنامه متوقف می‌شود.

try...except

کد پرخطر را در try و مدیریت خطا را در except قرار دهید:

try:
    x = 10 / 0
except:
    print("خطا رخ داد!")

مدیریت نوع خاص خطا

try:
    x = 10 / 0
except ZeroDivisionError:
    print("تقسیم بر صفر!")
except TypeError:
    print("نوع نامعتبر!")

دریافت پیام خطا

try:
    x = int("abc")
except ValueError as e:
    print(f"خطا: {e}")

finally — همیشه اجرا می‌شود

try:
    f = open("file.txt")
except FileNotFoundError:
    print("فایل پیدا نشد")
finally:
    print("این همیشه اجرا می‌شود")

else — وقتی خطا نباشد

try:
    x = 10 / 2
except ZeroDivisionError:
    print("خطا")
else:
    print(f"نتیجه: {x}")  # اجرا می‌شود
finally:
    print("پایان")

raise — پرتاب استثنا

def check_age(age):
    if age < 0:
        raise ValueError("سن نمی‌تواند منفی باشد!")
    return age

try:
    check_age(-5)
except ValueError as e:
    print(e)  # سن نمی‌تواند منفی باشد!

انواع خطاهای رایج

خطاتوضیح
ZeroDivisionErrorتقسیم بر صفر
ValueErrorمقدار نامعتبر
TypeErrorنوع نامعتبر
IndexErrorایندکس خارج از محدوده
KeyErrorکلید یافت نشد
FileNotFoundErrorفایل پیدا نشد
AttributeErrorویژگی وجود ندارد

ساخت استثنای سفارشی

class InvalidScoreError(Exception):
    """استثنای نمره نامعتبر."""
    pass

def set_score(score):
    if not 0 <= score <= 20:
        raise InvalidScoreError(f"نمره {score} نامعتبر است!")
    return score

try:
    set_score(25)
except InvalidScoreError as e:
    print(e)

خلاصه

ساختارتوضیح
tryکد پرخطر
exceptمدیریت خطا
elseوقتی خطا نباشد
finallyهمیشه اجرا
raiseپرتاب خطا

این مبحث بخشی از دوره آموزش کامل پایتون است.

ابزارهای مرتبط