Delen via


Eindelijk blokken gebruiken

Wanneer er een uitzondering optreedt, wordt de uitvoering gestopt en wordt er controle gegeven aan de juiste uitzonderingshandler. Dit betekent vaak dat regels code die u verwacht uit te voeren, worden overgeslagen. Sommige opschoning van resources, zoals het sluiten van een bestand, moet worden uitgevoerd, zelfs als er een uitzondering wordt gegenereerd. Hiervoor kunt u een finally blok gebruiken. Een finally blok wordt altijd uitgevoerd, ongeacht of er een uitzondering wordt gegenereerd.

In het volgende codevoorbeeld wordt een blok gebruikt om een try/catchArgumentOutOfRangeExceptionte vangen. De Main methode maakt twee matrices en probeert er een naar de andere te kopiƫren. De actie genereert een ArgumentOutOfRangeException omdat length is opgegeven als -1 en de fout wordt naar de console geschreven. Het finally blok wordt uitgevoerd, ongeacht het resultaat van de kopieeractie.

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

Zie ook