Compartilhar via


Como usar blocos finally

Quando ocorre uma exceção, a execução interrompe e o controle é dado ao manipulador de exceção apropriado. Isso geralmente significa que as linhas de código que você espera que sejam executadas são ignoradas. Alguma limpeza de recursos, como fechar um arquivo, precisa ser feita mesmo se uma exceção for gerada. Para fazer isso, você pode usar um finally bloco. Um finally bloco sempre é executado, independentemente de uma exceção ser gerada.

O exemplo de código a seguir usa um bloco try/catch para capturar um ArgumentOutOfRangeException. O Main método cria duas matrizes e tenta copiar uma para a outra. A ação gera um ArgumentOutOfRangeException porque length é especificado como -1 e o erro é gravado no console. O finally bloco é executado independentemente do resultado da ação de cópia.

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

Consulte também