Cómo: Controlar una excepción mediante Try y Catch (Guía de programación de C#)

Actualización: noviembre 2007

El propósito de un bloque try-catch es detectar y controlar una excepción generada por código en funcionamiento. Algunas excepciones se pueden controlar en un bloque catch y el problema se puede resolver sin que se vuelva a producir la excepción; sin embargo, con más frecuencia lo único que puede hacer es asegurarse de que se produzca la excepción adecuada.

Ejemplo

En este ejemplo, IndexOutOfRangeException no es la excepción más adecuada: ArgumentOutOfRangeException tiene más sentido para el método porque el argumento de index pasado por el llamador produce el error.

class TestTryCatch
{
    static int GetInt(int[] array, int index)
    {
        try
        {
            return array[index];
        }
        catch (System.IndexOutOfRangeException e)  // CS0168
        {
            System.Console.WriteLine(e.Message);
            //set IndexOutOfRangeException to the new exception's InnerException
            throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e);
        }
    }
}

Comentarios

El código que produce una excepción está incluido en el bloque try. Una instrucción catch se agrega inmediatamente después para controlar IndexOutOfRangeException, si se produce. El bloque catch controla IndexOutOfRangeException y en su lugar produce la excepción ArgumentOutOfRangeException, más adecuada. Para proporcionar al llamador tanta información como sea posible, considere la posibilidad de especificar la excepción original como InnerException de la nueva excepción. Dado que la propiedad InnerException es de sólo lectura, debe asignarla en el constructor de la nueva excepción.

Vea también

Conceptos

Guía de programación de C#

Referencia

Excepciones y control de excepciones (Guía de programación de C#)

Control de excepciones (Guía de programación de C#)