Control de errores y excepciones (Visual C# Express)

Actualización: noviembre 2007

Cuando algo va mal mientras un programa de C# se está ejecutando, se inicia una excepción. Las excepciones detienen el flujo actual del programa, y si no se hace nada, el programa dejará de funcionar. Las excepciones se producen por un error en el programa, por ejemplo, si se divide un número por cero, o pueden ser el resultado de alguna entrada inesperada, por ejemplo, cuando un usuario selecciona un archivo que no existe. El programador debe habilitar su programa para que resuelva estos problemas sin bloquearse.

C# proporciona varias palabras clave, try, catch y finally, que permiten a los programas detectar las excepciones, resolverlas y seguir trabajando. Estas constituyen una herramienta muy útil para hacer más fiables sus aplicaciones.

Try y Catch

Las palabras clave try y catch se utilizan conjuntamente. Utilice try para delimitar el bloque de código que podría generar una excepción y catch para contener el código que se ejecutará si la excepción se genera. En este ejemplo, un cálculo crea una excepción al dividir por cero, que luego se detecta. Sin los bloques try y catch, en este programa se produciría un error.

class ProgramTryCatch
{
    static void Main()
    {
        int x=0, y=0;

        try
        {
            x = 10 / y;
        }

        catch (System.DivideByZeroException)
        {
            System.Console.WriteLine("There was an attempt to divide by zero.");
        }
    }
}

Cuando se esté programando se recomienda ofrecer detalles sobre el tipo de excepción que detecta el código de catch. Cada try puede tener varias instrucciones catch, que se encargarán de excepciones diferentes.

Bloque finally

El código contenido en un bloque finally siempre se ejecuta, se produzca o no una excepción. Utilice el bloque finally para asegurarse de que se devuelven los recursos: por ejemplo, para asegurarse de que un archivo está cerrado.

try
{
    // Code to try here.
}
catch (SomeSpecificException ex)
{
    // Code to handle exception here.
}
finally
{
    // Code to execute after try (and possibly catch) here.
}

Utilizar el control de excepciones

Las excepciones no son siempre una señal de que algo catastrófico ha ocurrido en el programa. A menudo es una forma más conveniente de dejar una sección de código que ya no es pertinente o es una señal de que un método no se ha realizado con éxito. Muchos de los métodos de clase de .NET Framework crean excepciones para advertir de una determinada condición.

También puede crear sus propias excepciones mediante la palabra clave throw. Por ejemplo:

class ProgramThrow
{
    static void DoWork(int x)
    {
        if (x > 5)
        {
            throw new System.ArgumentOutOfRangeException("X is too large");
        }
    }

    static void Main()
    {
        try
        {
            DoWork(10);
        }
        catch (System.ArgumentOutOfRangeException ex)
        {
            System.Console.WriteLine(ex.Message);
        }
    }
}

Utilice las excepciones en sus programas cuando crea que existe la posibilidad de que surja alguna situación inesperada. Por ejemplo, al tratar con los datos introducidos por un usuario, al leer un archivo o al obtener acceso a alguna información de Internet.

Vea también

Tareas

Cómo: Capturar una excepción (Visual C#)

Conceptos

Manual del lenguaje C#

Referencia

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

throw (Referencia de C#)

try-catch (Referencia de C#)

try-finally (Referencia de C#)

try-catch-finally (Referencia de C#)