آموزش مدیریت خطا با Try Except در پایتون
بلوک try به ما امکان میدهد تا یک بلوک از کدها را برای (پیدا کردن) خطاها تست کنیم.
بلوک except به ما امکان میدهد تا خطا را مدیریت کنیم.
بلوک else به ما امکان میدهد تا کدها را هنگامی که هیچ خطایی وجود ندارد، اجرا کنیم.
بلوک finally به ما امکان میدهد تا کدها را صرف نظر از نتیجهی بلوکهای try و except اجرا کنیم،.
مدیریت استثناء(Exception Handling) در پایتون
وقتی که یک خطا(error) رخ میدهد، که ما آن را استثناء نام گذاری میکنیم، پایتون معمولاً متوقف میشود و یک پیام خطا تولید میکند. این استثناءها میتوانند با استفاده از دستور try مدیریت شوند.
مثال شماره 1
بلوک try یک خطا یا استثناء ایجاد خواه کرد زیرا x تعریف نشده است:
#تعریف نشده است x یک خطا تولید خواهد کرد زیرا try بلوک
try:
print(x)
except:
print("An exception occurred")
نتیجه:
An exception occurred
امتحان کنیدچون که بلوک try یک خطا ایجاد میکند، کدهای بلوک except اجرا میشوند. بدون استفاده از بلوک try، برنامه از کار خواهد افتاد و یک خطا ایجاد خواهد شد:
مثال شماره 2
این دستور یک خطا ایجاد میکند، زیرا x تعریف نشده است:
#این باعث می شود یک خطا یا استثنا ایجاد شود زیرا ایکس تعریف نشده است
print(x)
نتیجه:
Traceback (most recent call last):
File "demo_try_except_error.py", line 3, in <module>
print(x)
NameError: name 'x' is not defined
امتحان کنیداستفاده از چندین خطا یا استثناء
ما میتوانیم هر تعداد بلوک استثناء که بخواهیم، تعریف کنیم. بعنوان مثال، اگر بخواهیم یک بلوک خاص از کدها برای یک نوع خاص از خطا اجرا شوند، به صورت زیر عمل میکنیم:
مثال شماره 3
پرینت کردن یک پیغام، اگر بلوک try یک خطای NameError تولید کند و برای دیگر خطاها، یک پیغام دیگر را پرینت میکنیم:
#تعریف نشده است x تولید تولید می کند زیرا NameError یک try بلوک
try:
print(x)
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")
نتیجه:
Variable x is not defined
امتحان کنیدنکته: برای دیگر انواع خطاها میتوانید به مقالهی مرجع خطاهای داخلی پایتون مراجعه کنید.
دستور Else
ما میتوانیم با استفاده از کلمهی کلیدی else، یک بلوک از کدها را تعریف کنیم تا اگر خطایی تولید نشد، اجرا شوند:
مثال شماره 4
در این مثال، بلوک try هیچ خطایی تولید نمی کند:
#اجرا میشود else هیچ خطایی تولید نمی کند بنابراین بلوک try بلوک
try:
print("Hello")
except:
print("Something went wrong")
else:
print("Nothing went wrong")
نتیجه:
Hello
Nothing went wrong
امتحان کنیددستور Finally
بلوک finally، اگر مشخص شده باشد، صرف نظر از اینکه بلوک try یک خطا را تولید کند یا نه، اجرا خواهد شد.
مثال شماره 5
try:
print(x)
except:
print("Something went wrong")
finally:
print("The 'try except' is finished")
نتیجه:
Something went wrong
The 'try except' is finished
امتحان کنیداین میتواند برای بستن اشیاء(آبجکتها) و پاکسازی منابع مفید باشد:
مثال شماره 6
در مثال زیر سعی می کنیم چیزی را در یک فایل بنویسیم که قابلیت نوشتن ندارد:
# یک خطا ایجاد می کند try است بنویسیم بلوکread-only هنگامی که سعی کنیم چیزی را در یک فایل که فقط خواندنی یا
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")
نتیجه:
Something went wrong when writing to the file
امتحان کنیداین برنامه میتواند بدون باز گذاشتن آبجکت یا شیءِ فایلِ مورد نظر، ادامه پیدا کند.
تولید کردن یک خطا یا استثناء در پایتون
شما بعنوان یک برنامه نویس پایتون، میتوانید انتخاب کنید که اگر یک شرط اتفاق بیفتد، یک خطا یا استثناء صادر(throw) شود. برای صادر کردن(یا تولید کردن) یک استثناء میتوانید از کلمهی کلیدی raise استفاده کنید.
مثال شماره 7
تولید(raise) یک خطا و متوقف کردن برنامه، اگر x کمتر از 0 باشد:
x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")
نتیجه:
Traceback (most recent call last):
File "demo_ref_keyword_raise.py", line 4, in <module>
raise Exception("Sorry, no numbers below zero")
Exception: Sorry, no numbers below zero
امتحان کنیداز کلمهی کلیدی raise برای تولید کردن یک استثنا یا خطا استفاده میشود. ما میتوانیم تعریف کنیم که چه نوع خطایی ایجاد شود؛ و همچنین میتوانیم متنی که برای کاربر پرینت میشود را هم تعریف کنیم.
مثال شماره 8
تولید کردن یک خطای TypeError، اگر x یک عدد صحیح(integer) نباشد:
x = "hello"
if not type(x) is int:
raise TypeError("Only integers are allowed")
نتیجه:
Traceback (most recent call last):
File "demo_ref_keyword_raise2.py", line 4, in <module>
raise TypeError("Only integers are allowed")
TypeError: Only integers are allowed
امتحان کنیدمنبع: www.w3schools.com/python
- بازدید: 35
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.