Finally bloklarını kullanma

Bir özel durum oluştuğunda, yürütme durdurulur ve denetim uygun özel durum işleyicisine verilir. Bu genellikle yürütülmesini beklediğiniz kod satırlarının atlandığı anlamına gelir. Bir özel durum oluşturulsa bile bir dosyayı kapatma gibi bazı kaynak temizleme işlemleri yapılmalıdır. Bunu yapmak için bir finally blok kullanabilirsiniz. Bir finally özel durumun oluşup oluşturmadığına bakılmaksızın bir blok her zaman yürütülür.

Aşağıdaki kod örneği, bir yakalamak için bir try/catchArgumentOutOfRangeExceptionblok kullanır. Main yöntemi iki dizi oluşturur ve birini diğerine kopyalamaya çalışır. Eylem, -1 olarak belirtildiğinden length bir ArgumentOutOfRangeException oluşturur ve hata konsola yazılır. Blok, finally kopyalama eyleminin sonucundan bağımsız olarak yürütülür.

using namespace System;

ref class ArgumentOutOfRangeExample
{
public:
    static void Main()
    {
        array<int>^ array1 = {0, 0};
        array<int>^ array2 = {0, 0};

        try
        {
            Array::Copy(array1, array2, -1);
        }
        catch (ArgumentOutOfRangeException^ e)
        {
            Console::WriteLine("Error: {0}", e);
            throw;
        }
        finally
        {
            Console::WriteLine("This statement is always executed.");
        }
    }
};

int main()
{
    ArgumentOutOfRangeExample::Main();
}
class ArgumentOutOfRangeExample
{
    public static void Main()
    {
        int[] array1 = {0, 0};
        int[] array2 = {0, 0};

        try
        {
            Array.Copy(array1, array2, -1);
        }
        catch (ArgumentOutOfRangeException e)
        {
            Console.WriteLine("Error: {0}", e);
            throw;
        }
        finally
        {
            Console.WriteLine("This statement is always executed.");
        }
    }
}
Class ArgumentOutOfRangeExample
    Public Shared Sub Main()
        Dim array1() As Integer = {0, 0}
        Dim array2() As Integer = {0, 0}

        Try
            Array.Copy(array1, array2, -1)
        Catch e As ArgumentOutOfRangeException
            Console.WriteLine("Error: {0}", e)
            Throw
        Finally
            Console.WriteLine("This statement is always executed.")
        End Try
    End Sub
End Class

Ayrıca bkz.