بلوک finally

گاهی اوقات می‌خواهید برخی کدها همیشه اجرا شوند خواه استثنا رخ دهد، خواه رخ ندهد، در این صورت از بلوک finally استفاده می‌شود. قبلاً یاد گرفتیم که اگر در بلوک try یک استثناء رخ دهد همه کدهای موجود در این بلوک نادیده گرفته شده و برنامه به قسمت catch می‌رود. کدهای نادیده گرفته شده ممکن است در برنامه نقش حیاتی داشته باشند.

هدف بلوک finally هم حفظ نقش این کدها به صورت غیر مستقیم است. کدهایی را که فکر می‌کنید کدهای پایه‌ای هستند و برای اجرای برنامه لازم هستند را در داخل بلوک finally قرار دهید. برنامه زیر نحوه استفاده از این بلوک را نشان می‌دهد :

fun main(args: Array<String>)
{
    val result: Int
    val x = 5
    val y = 0

    try
    {
        result = x / y //ERROR
    }
    catch (error: ArithmeticException)
    {
        println(error.message)
    }
    finally                                    
    {                                          
        println("finally blocked was reached.")
    }                                          
}
\ by zero.
finally blocked was reached.

بلوک finally بعد از بلوک catch نوشته می‌شود. اگر از چندین بلوک catch در برنامه استفاده می‌کنید بلوک finally باید بعد از همه آنها قرار گیرد. می‌توان از بلوک try و finally در صورتی که بلوک catch نداشته باشیم به صورت زیر استفاده کرد.

try
{
    //some code
}
finally
{
    //some code
}

از این بلوک معمولاً برای بستن یک اتصال پایگاه داده یا بستن یک فایل استفاده می‌شود.