مدیریت استثناها در پایتون
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 | پرتاب خطا |
این مبحث بخشی از دوره آموزش کامل پایتون است.