Cette documentation est archivée et n’est pas conservée.

Comment : gérer une exception à l'aide de try/catch (Guide de programmation C#)

Le but d'un bloc try-catch est d'intercepter et de gérer une exception générée par un code actif. Certaines exceptions peuvent être gérées dans un bloc catch et le problème résolu sans que l'exception soit levée à nouveau. Toutefois, le plus souvent, la seule chose que vous pouvez faire est de veiller à ce que l'exception appropriée soit levée.

Dans cet exemple, IndexOutOfRangeException n'est pas l'exception la plus appropriée : ArgumentOutOfRangeException a de plus de sens pour la méthode parce que l'erreur est provoquée par l'argument index passé par l'appelant.

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);
        }
    }
}

Le code qui résulte en une exception est joint dans le bloc try. Une instruction catch est ajoutée immédiatement après pour gérer IndexOutOfRangeException, si elle se produit. Le bloc catch gère l'IndexOutOfRangeException et lève à la place l'exception plus appropriée ArgumentOutOfRangeException. Pour fournir à l'appelant autant d'informations que possible, pensez à spécifier l'exception d'origine comme InnerException de la nouvelle exception. Comme la propriété InnerException a pour valeur readonly, vous devez l'assigner dans le constructeur de la nouvelle exception.

Afficher: