Поделиться через


Как использовать блоки, наконец,

При возникновении исключения выполнение останавливается и управляется соответствующим обработчиком исключений. Это часто означает, что строки кода, которые вы ожидаете выполнить, обходятся. Очистка некоторых ресурсов, например закрытие файла, должна выполняться даже при возникновении исключения. Для этого можно использовать finally блок. finally Блок всегда выполняется независимо от того, создается ли исключение.

В следующем примере кода используется блок try/catch для перехвата ArgumentOutOfRangeException. Метод Main создает два массива и пытается скопировать один на другой. Действие создает ArgumentOutOfRangeException так как length указано как -1, и ошибка записывается в консоль. Блок finally выполняется независимо от результата действия копирования.

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

См. также