Compartir a través de


Cómo usar bloques finally

Cuando se produce una excepción, la ejecución se detiene y el control se asigna al controlador de excepciones adecuado. Esto suele significar que se omiten las líneas de código que espera que se ejecuten. Es necesario realizar alguna limpieza de recursos, como cerrar un archivo, incluso si se produce una excepción. Para ello, puede usar un finally bloque . Un finally bloque siempre se ejecuta, independientemente de si se produce una excepción.

En el ejemplo de código siguiente se usa un bloque try/catch para capturar un ArgumentOutOfRangeException. El Main método crea dos matrices e intenta copiar una en la otra. La acción genera un ArgumentOutOfRangeException porque length se especifica como -1 y el error se escribe en la consola. El finally bloque se ejecuta independientemente del resultado de la acción de copia.

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 también