بلوک finally
گاهی اوقات میخواهید برخی کدها همیشه اجرا شوند خواه استثناء رخ دهد، خواه رخ ندهد، در این صورت از بلوک finally استفاده میشود. قبلاً یاد گرفتیم که اگر در بلوک try یک استثناء رخ دهد همه کدهای موجود در این بلوک نادیده گرفته شده و برنامه به قسمت except میرود. کدهای نادیده گرفته شده ممکن است در برنامه نقش حیاتی داشته باشند.
هدف بلوک finally هم حفظ نقش این کدها به صورت غیر مستقیم است. کدهایی را که فکر میکنید کدهای پایهای هستند و برای اجرای برنامه لازم هستند را در داخل بلوک finally قرار دهید. برنامه زیر نحوه استفاده از این بلوک را نشان میدهد :
1: try: 2: x = 5; 3: y = 0; 4: result = x / y; #ERROR 5: 6: except ZeroDivisionError: 7: print("Division by zero is not allowed."); 8: finally: 9: print("finally blocked was reached.");
Attempted to divide by zero. finally blocked was reached.
بلوک finally بعد از بلوک catch نوشته میشود. اگر از چندین بلوک catch در برنامه استفاده میکنید بلوک finally باید بعد از همه آنها قرار گیرد. میتوان از بلوک try و finally در صورتی که بلوک catch نداشته باشیم به صورت زیر استفاده کرد.
try: #some code finally: #some code
از این بلوک معمولاً برای بستن یک اتصال پایگاه داده یا بستن یک فایل استفاده میشود.