try...except
در پایتون «مدیریت خطا» یعنی جلوگیری از کرش برنامه. با بلوک try...except خطاها را می گیریم. «استثنا (Exception)» همان خطاست. سپس برنامه ادامه می دهد، مثل وقتی بازی خطا می دهد اما نمی پرد.
مدیریت خطا با try...except
try کد را آزمایش می کند. سپس except خطا را می گیرد. بنابراین برنامه زنده می ماند.
try:
print(x)
except:
print("An exception occurred")
بدون try برنامه کرش می کند و خطا می دهد.
print(x)
چند except برای خطاهای مختلف
می توانیم برای هر نوع خطا پیام متفاوت بدهیم. این کار عیب یابی را ساده می کند.
try:
print(x)
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")
else وقتی خطایی نیست
اگر try خطا نداد، بلوک else اجرا می شود. این برای مسیر موفق است.
try:
print("Hello")
except:
print("Something went wrong")
else:
print("Nothing went wrong")
finally همیشه اجرا می شود
finally در هر حالت اجرا می شود. بنابراین برای جمع کردن منابع عالی است.
try:
print(x)
except:
print("Something went wrong")
finally:
print("The 'try except' is finished")
مثال فایل: حتی اگر نوشتن خطا دهد، در نهایت فایل بسته می شود.
try:
f = open("demofile.txt")
try:
f.write("Lorum Ipsum")
except:
print("Something went wrong when writing to the file")
finally:
f.close()
except:
print("Something went wrong when opening the file")
raise: خودت خطا پرتاب کن
گاهی شرایط بد است. با کلمه raise خطا را عمداً می سازیم.
x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")
می توان نوع خطا و پیام را مشخص کرد. این کمک می کند خطاها واضح باشند.
x = "hello"
if not type(x) is int:
raise TypeError("Only integers are allowed")
گام های عملی
- یک کد ساده را داخل try بگذار.
- در except پیام مناسب چاپ کن.
- اگر لازم است، else و finally را اضافه کن.
- برای شرایط نامعتبر، از raise استفاده کن.
جمع بندی سریع
- try آزمایش می کند؛ except خطا را می گیرد.
- else وقتی خطایی نیست اجرا می شود.
- finally همیشه اجرا می شود.
- با raise خطا را خودت بساز.
- مدیریت خطا پایه برنامه پایدار است.
نکته: برای نصب کتابخانه ها با خطاهای نصب، صفحه مدیر بسته ها (PIP) کمک می کند.