Freigeben über


So verwenden Sie finally-Blöcke

Wenn eine Ausnahme auftritt, wird die Ausführung beendet und die Steuerung dem entsprechenden Ausnahmehandler übergeben. Dies bedeutet häufig, dass Codezeilen, von denen Sie erwarten, dass sie ausgeführt werden, übersprungen werden. Einige Ressourcenbereinigungen, z. B. das Schließen einer Datei, müssen auch dann ausgeführt werden, wenn eine Ausnahme ausgelöst wird. Dazu können Sie einen finally Block verwenden. Ein finally Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wird.

Im folgenden Codebeispiel wird ein try/catch Block zum Abfangen eines ArgumentOutOfRangeExceptionBlocks verwendet. Die Main Methode erstellt zwei Arrays und versucht, ein Array in die andere zu kopieren. Die Aktion generiert ein ArgumentOutOfRangeException, da length als -1 angegeben ist, und der Fehler wird in die Konsole geschrieben. Der finally Block wird unabhängig vom Ergebnis der Kopieraktion ausgeführt.

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: {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

Siehe auch