try-finally (Referencia de C#)

Actualización: noviembre 2007

El bloque finally es útil para limpiar cualquier recurso asignado en el bloque try, así como también para ejecutar cualquier código que deba ejecutarse incluso si hay una excepción. El control se transfiere siempre al bloque finally independientemente de cómo finalice el bloque try.

Mientras que catch se utiliza para controlar las excepciones que se producen en un bloque de instrucciones, finally se emplea para asegurar la ejecución de un bloque de instrucciones sin importar cómo finaliza el bloque try anterior.

Ejemplo

En este ejemplo, existe una instrucción de conversión no válida que produce una excepción. Cuando se ejecuta el programa, se obtiene un mensaje de error en tiempo de ejecución, pero la cláusula finally se ejecuta de todas formas y muestra el resultado.

public class ThrowTest
{
    static void Main()
    {
        int i = 123;
        string s = "Some string";
        object o = s;

        try
        {
            // Invalid conversion; o contains a string not an int
            i = (int)o;
        }
        finally
        {
            Console.Write("i = {0}", i);
        }
    }
}

El ejemplo anterior hace que se produzca la excepción System.InvalidCastException.

A pesar de que se capturó una excepción, la instrucción de salida incluida en el bloque finally se ejecutará de todas formas, es decir:

i = 123

Para obtener más información acerca de finally, vea try-catch-finally.

C# también proporciona using (Instrucción, Referencia de C#), que ofrece una sintaxis adecuada para exactamente la misma funcionalidad que una instrucción try-finally.

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 5.3.3.14 Instrucciones Try-finally

  • 8,11 La instrucción try

  • 16 Excepciones

Vea también

Tareas

Cómo: Iniciar excepciones explícitamente

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

The try, catch, and throw Statements

Instrucciones para el control de excepciones (Referencia de C#)

throw (Referencia de C#)

try-catch (Referencia de C#)

Otros recursos

Referencia de C#