استثناها (Exceptions)
«استثناها (Exceptions)» یعنی خطاهای زمان اجرا. وقتی برنامه می پرد. با مدیریت استثنا، برنامه نجنگد و آرام ادامه دهد. «استثناهای پایتون» همان خطاهای آماده زبان هستند.
نمونه ساده try، except
text = "12x"
try:
num = int(text)
print(num)
except ValueError:
print("ورودی عدد نیست")
else و finally چه می کنند؟
name = "amir"
try:
size = len(name)
except Exception:
print("مشکل پیش آمد")
else:
print("همه چیز اوکی است")
finally:
print("پاکسازی انجام شد")
چند استثنا باهم: tuple از انواع
data = [1, 2, 3]
try:
print(data[5])
except (IndexError, KeyError) as err:
print("خطای دسترسی:")
print(err)
ایجاد استثنا با raise
age = -2
if age < 0:
raise ValueError("سن منفی معتبر نیست")
استثنای سفارشی: کلاس جدید
class LowScoreError(Exception):
pass
score = 8
if score < 10:
raise LowScoreError("نمره کافی نیست")
نمونه های پرتکرار از استثناهای پایتون
# ZeroDivisionError
try:
x = 5 / 0
except ZeroDivisionError:
print("تقسیم بر صفر")
# TypeError
try:
y = "5" + 2
except TypeError:
print("جمع نادرست نوع")
# NameError
try:
print(unknown_var)
except NameError:
print("نام تعریف نشده است")
نکته: ریشه همه استثناها کلاس Exception است. بنابراین except Exception همه خطاها را می گیرد. اما بهتر است دقیق بگیرید.
هشدار: هرگز استثنا را بی صدا نخورید. حداقل پیام مفید چاپ کنید یا لاگ بگیرید.
گام های تمرینی سریع
- یک کد ساده را داخل try بگذار.
- یک except مناسب بنویس و پیام بده.
- با else نتیجه موفق را چاپ کن.
- با finally منابع را ببند یا پاکسازی کن.
برای آشنایی با واژه ها، به کلیدواژه ها برو. همچنین برای کار با فایل ها، صفحه متدهای فایل مفید است. توضیح استثناهای پایتون را نیز اینجا مرور کن.
جمع بندی سریع
- try/except خطا را کنترل می کند.
- else برای موفقیت است.
- finally همیشه اجرا می شود.
- raise استثنا می سازد.
- دقیق استثنا بگیر، نه کلی.