Comment gérer une exception à l’aide de try-catch

L’objectif d’un bloc try-catch est d’intercepter et de gérer une exception générée par du code opérationnel. 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, mais le plus souvent la seule chose que vous puissiez faire est de vous assurer que l’exception appropriée est levée.

Exemple

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

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

Commentaires

Le code qui provoque une exception est cloisonné dans le bloc try. Une instruction catch est ajoutée juste après pour gérer IndexOutOfRangeException, si elle se produit. Le bloc catch gère IndexOutOfRangeException et lève l’ArgumentOutOfRangeException plus appropriée à la place. 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 la valeur read-only, vous devez l’affecter dans le constructeur de la nouvelle exception.