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.