استفاده از بلوک finally
گاهی اوقات میخواهید برخی کدها همیشه اجرا شوند خواه استثناء رخ دهد، خواه رخ ندهد، در این صورت از بلوک finally استفاده میشود. قبلاً یاد گرفتیم که اگر در بلوک try یک استثناء رخ دهد همه کدهای موجود در این بلوک نادیده گرفته شده و برنامه به قسمت catch میرود. کدهای نادیده گرفته شده ممکن است در برنامه نقش حیاتی داشته باشند.
هدف بلوک finally هم حفظ نقش این کدها به صورت غیر مستقیم است. کدهایی را که فکر میکنید کدهای پایهای هستند و برای اجرای برنامه لازم هستند را در داخل بلوک finally قرار دهید. برنامه زیر نحوه استفاده از این بلوک را نشان میدهد :
1: using System; 2: 3: public class Program 4: { 5: public static void Main() 6: { 7: int result; 8: int x = 5; 9: int y = 0; 10: 11: try 12: { 13: result = x / y; 14: } 15: catch(DivideByZeroException error) 16: { 17: Console.WriteLine(error.Message); 18: } 19: finally 20: { 21: Console.WriteLine("finally blocked was reached."); 22: } 23: } 24: }
Attempted to divide by zero. finally blocked was reached.
بلوک finally بعد از بلوک catch نوشته میشود. اگر از چندین بلوک catch در برنامه استفاده میکنید بلوک finally باید بعد از همه آنها قرار گیرد. میتوان از بلوک try و finally در صورتی که بلوک catch نداشته باشیم به صورت زیر استفاده کرد.
try { //some code } finally { //some code }
از این بلوک معمولاً برای بستن یک اتصال پایگاه داده یا بستن یک فایل استفاده میشود.