استفاده از ساختمان try-finally جهت مدیریت خطا
موسسه پایاپروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری استفاده از ساختمان try-finally جهت مدیریت خطا در پایتون داشته باشد.
انواع خطا در پایتون:
خطاها در پایتون می تواند دو نوع خطاهای نحوی و استثنایی باشند. خطاها مشکلاتی در یک برنامه هستند که به دلیل آن برنامه اجرا را متوقف می کند. از سوی دیگر، زمانی که برخی رویدادهای داخلی رخ میدهند که جریان عادی برنامه را تغییر میدهند، استثناها مطرح میشوند.
آموزش کار با try-finally :
برای رفع خطا در پایان آن قطعه کد :tryاز :finally استفاده کنید. دستوری که در قسمت :finally قرار بگیرد، بدون در نظر گرفتن اینکه خطایی در بخش try در داده یا نه صد در صد اجرا خواهد شد.
به شکل زیر از این ساختار استفاده می کنیم:
;You do your operations here
عملیات را در اینجا انجام دهید
………………….
.Due to any exception, this may be skipped
ممکن است به دلیل وجود هر گونه خطایی این کد اجرا نشود
:finally
.This would always be executed
دستوری که حتما اجرا خواهد شد
نکته: نمی شود تابع else و finally را با هم به کار ببرید.
مثال 1:
/usr/bin/python!#
:try
fh = open(“testfile”, “w”)
fh.write(“This is my test file for exception handling!!”)
:finally
print “Error: can\’t find file or read data”
در صورتی که شما مجوز باز کردن فایل برای درج اطلاعات در آن را نداشته باشید،خطای زیر را مشاهده می کنید:
Error: can’t find file or read data
مثال بالا را می توان به صورت کوتاه تر و مفید تر نیز درج کنیم که در زیر می توانید آن را مشاهده کنید.
/usr/bin/python !#
:try
fh = open(“testfile”, “w”)
:try
fh.write(“This is my test file for exception handling!!”)
:finally
print “Going to close the file”
()fh.close
:except IOError
print “Error: can\’t find file or read data”
نحوه کار Try و Except :
دستور Try و Except برای رسیدگی به این خطاها در کد ما در پایتون استفاده می شود. بلوک try برای بررسی برخی از کدها برای وجود خطا استفاده می شود، یعنی کد داخل بلوک try زمانی اجرا می شود که هیچ خطایی در برنامه وجود نداشته باشد. در حالی که هر زمان که برنامه با خطا در بلوک try قبلی مواجه شود، کد داخل بلوک غیر از آن اجرا می شود.
رفع خطای Try-Except :
ابتدا، عبارت try اجرا می شود، یعنی کد بین عبارت try و except
اگر هیچ خطا وجود نداشته باشد، آنگاه فقط عبارت try اجرا می شود.
اگر هر خطایی رخ دهد، بند try حذف می شود و بند except اجرا می شود.
اگر خطایی رخ دهد، اما بند except در کد آن را مدیریت نمی کند، به دستورات try خارجی منتقل می شود. اگر خطا بدون کنترل باقی بماند، اجرا متوقف می شود.
نکته: دستور try می تواند بیش از یک بند except داشته باشد.
مثال: در این مثال یک خطا وجود دارد بنابراین فقط عبارت استثنا اجرا می شود.
Python code to illustrate#
working of try3 #
:def divide(x, y)
: try
Floor Division : Gives only Fractional Part as Answer #
result = x // y
print(“Yeah ! Your answer is :”, result)
:except ZeroDivisionError
print(“Sorry ! You are dividing by zero “)
Look at parameters and note the working of Program #
divide(3, 0)
خروجی:
Sorry ! You are dividing by zero
مثال: مثال زیر تنها یک خطا را مدیریت می کند.
/usr/bin/python!#
. Define a function here#
:def temp_convert(var)
:try
return int(var)
:except ValueError, Argument
print “The argument does not contain numbers\n”, Argument
.Call above function here#
;temp_convert(“xyz”)
نتیجه ی زیر را بدست می دهد:
The argument does not contain numbers
