Python Try Except

بلاک try این امکان را فراهم می‌کند که خطا داشتن کد را تست کنیم.

بلاک except در صورت وجود خطا امکان کنترل کردن شرایط را فراهم می‌کند.

بلاک finally این امکان را می‌دهد که کدی را اجرا کنید، صرف نظر از هر آنچه در بلاک های try و except اتفاق افتاده است.

کنترل خطاها

وقتی کد نوشته شده در بلاک try به هر دلیلی دچار خطا می‌شود، کد های بلاک except به منظور کنترل خطا اجرا می‌شوند.(هدف از ایجاد این ساختار جلوگیری از بروز خطا در هنگام اجرای برنامه است).

اگر شما یک Application داشته باشید و خطا ها را مدیریت نکنید ممکن است Application شما با خطاهایی همچون Application force stop , Application Not Responding و خطاهایی مانند اینها مواجه شود.

 

مثال: کد زیر در بلاک try دچار خطا می‌شود و بجای این که برنامه به دلیل خطا دچار crash شود بلاک except اجرا می‌شود.

try:
  print(x)
except:
  print("An exception occurred")

بدونه بلاک try , except برنامه فوق دچار خطا شده و crash می‌کند.

print(x)

استفاده از چندین بلاک except

از آنجا که خطاها به دلایل مختلفی اتفاق می‌افتند این امکان فراهم شده است که از چندین بلاک except استفاده کنید و هرکدام را برای یک نوع خطای خاص برنامه ریزی کنید.

 

مثال: اگر خطای NameError داشتیم بلاک اول اجرا می‌شود و اگر چیز دیگری بود بلاک دوم

try:
  print(x)
except NameError:
  print("Variable x is not defined")
except:
  print("Something else went wrong")

استفاده از else

این امکان وجود دارد که در یک بلاک از دستور else استفاده کنید. کدهای این بلاک زمانی اجرا می‌شوند که هیچ خطایی رخ ندهد (یعنی کد های بلاک try به درستی اجرا شود).

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")

از مهم ترین کاربرد های بلاک finally در هنگام کار کردن با فایل ها است.

 

مثال: تصور کنید فایلی را درون برنامه خود باز کرده اید و قصد انجام تغییراتی روی آن دارید، تحت هر شرایطی چه با خطا مواجه شوید چه نشوید مطلوب است فایلی را که باز کرده اید در پایان ببندید. می‌توانید دستور بستن فایل را درون این بلاک قرار دهید.(این برای مدیریت حافظه ضروری است).

try:
  f = open("demofile.txt")
  f.write("Lorum Ipsum")
except:
  print("Something went
wrong when writing to the file"
)

finally:
  f.close()

برنامه فوق تحت هر شرایطی قبل از پایان یافتن فایل مذکور را می‌بندد.