Cómo: Utilizar bloques Finally
Cuando se produce una excepción, se detiene la ejecución y da el control al controlador de excepciones más cercano. A menudo, esto significa que no se ejecutan líneas de código que se espera que se llamen siempre. Siempre se debe ejecutar cierta limpieza de recursos, como el cierre de un archivo, incluso si se produce una excepción. Para lograr esto, se puede usar un bloque Finally. Los bloques Finally se ejecutan siempre, independientemente de si se produce una excepción o no.
En el siguiente ejemplo de código se utiliza un bloque try/catch para detectar una excepción ArgumentOutOfRangeException. El método Main crea dos matrices e intenta copiar una en la otra. La acción genera una ArgumentOutOfRangeException y el error se escribe en la consola. El bloque Finally se ejecuta, sea cual sea el resultado de la acción de copia.
Ejemplo
Imports System
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)
Finally
Console.WriteLine("This statement is always executed.")
End Try
End Sub
End Class
using System;
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);
}
finally
{
Console.WriteLine("This statement is always executed.");
}
}
}
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);
}
finally
{
Console::WriteLine("This statement is always executed.");
}
}
};
int main()
{
ArgumentOutOfRangeExample::Main();
}
Vea también
Tareas
Cómo: Utilizar el bloque Try/Catch para detectar excepciones
Cómo: Iniciar excepciones explícitamente
Cómo: Crear excepciones definidas por el usuario