Dela via


Så här använder du slutligen block

När ett undantag inträffar stoppas körningen och kontrollen ges till lämplig undantagshanterare. Det innebär ofta att kodrader som du förväntar dig ska köras kringgås. En del resursrensning, till exempel att stänga en fil, måste göras även om ett undantag utlöses. För att göra detta kan du använda ett finally block. Ett finally block körs alltid, oavsett om ett undantag utlöses.

I följande kodexempel används ett try/catch block för att fånga en .ArgumentOutOfRangeException Metoden Main skapar två matriser och försöker kopiera en till den andra. Åtgärden genererar en ArgumentOutOfRangeException eftersom length anges som -1 och felet skrivs till konsolen. Blocket finally körs oavsett resultatet av kopieringsåtgärden.

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

Se även