Megosztás a következőn keresztül:


Végül blokkok használata

Kivétel esetén a végrehajtás leáll, és a rendszer a megfelelő kivételkezelőnek adja meg a vezérlést. Ez gyakran azt jelenti, hogy a végrehajtásra váró kódsorokat a rendszer megkerüli. Néhány erőforrás-törlést, például egy fájl bezárását akkor is el kell végezni, ha kivételt jeleznek. Ehhez használhat blokkot finally . A finally blokkok mindig végrehajtásra kerülnek, függetlenül attól, hogy a rendszer kivételt ad-e.

Az alábbi kódpéldában egy try/catch blokkot használ egy .ArgumentOutOfRangeException A Main metódus két tömböt hoz létre, és megpróbálja átmásolni az egyiket a másikba. A művelet létrehoz egy ArgumentOutOfRangeException -1-ként megadott hibát length , és a hiba a konzolra lesz írva. A finally blokk a másolási művelet eredményétől függetlenül fut.

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

Lásd még