Partager via


Gestion et levée d’exceptions dans .NET

Les applications doivent être en mesure de gérer les erreurs qui se produisent pendant l’exécution de manière cohérente. .NET fournit un modèle pour notifier les applications des erreurs de manière uniforme : les opérations .NET indiquent l’échec en levant des exceptions.

Exceptions

Une exception est toute condition d’erreur ou comportement inattendu rencontré par un programme en cours d’exécution. Les exceptions peuvent être levées en raison d’une erreur dans votre code ou dans du code que vous appelez (par exemple, une bibliothèque partagée), des ressources de système d’exploitation indisponibles, des conditions inattendues que le runtime rencontre (par exemple, du code qui ne peut pas être vérifié), etc. Votre application peut récupérer face à certaines de ces situations, mais pas à d'autres. Bien que vous puissiez récupérer à partir de la plupart des exceptions d’application, vous ne pouvez pas récupérer à partir de la plupart des exceptions d’exécution.

Dans .NET, une exception est un objet qui hérite de la System.Exception classe. Une exception est levée à partir d'une partie du code où un problème s'est produit. L'exception remonte dans la pile jusqu'à ce que l'application la gère ou que le programme se termine.

Exceptions et méthodes traditionnelles de gestion des erreurs

Traditionnellement, le modèle de gestion des erreurs d’un langage s’appuie sur la façon unique de détecter les erreurs et de localiser les gestionnaires pour eux, ou sur le mécanisme de gestion des erreurs fourni par le système d’exploitation. La façon dont .NET implémente la gestion des exceptions offre les avantages suivants :

  • La levée et la gestion des exceptions fonctionnent de la même façon pour les langages de programmation .NET.

  • Ne nécessite aucune syntaxe de langage particulière pour la gestion des exceptions, mais permet à chaque langage de définir sa propre syntaxe.

  • Les exceptions peuvent être levées au-delà des limites des processus et même des ordinateurs.

  • Le code de gestion des exceptions peut être ajouté à une application pour augmenter la fiabilité du programme.

Les exceptions offrent des avantages par rapport à d’autres méthodes de notification d’erreur, telles que les codes de retour. Les échecs ne passent pas inaperçus car si une exception est levée et que vous ne la gérez pas, le runtime met fin à votre application. Les valeurs non valides ne continuent pas à se propager via le système en raison du code qui ne parvient pas à rechercher un code de retour d’échec.

Exceptions courantes

Le tableau suivant répertorie certaines exceptions courantes avec des exemples de ce qui peut les provoquer.

Type d’exception Descriptif Exemple :
Exception Classe de base pour toutes les exceptions. Aucun (utilisez une classe dérivée de cette exception).
IndexOutOfRangeException Levée par le runtime uniquement lorsqu’un tableau est indexé de manière incorrecte. Indexation d’un tableau en dehors de sa plage valide :
arr[arr.Length+1]
NullReferenceException Levée par le runtime uniquement lorsqu’un objet Null est référencé. object o = null;
o.ToString();
InvalidOperationException Levée par les méthodes en cas d’état non valide. Appeler Enumerator.MoveNext() après la suppression d’un élément de la collection sous-jacente.
ArgumentException Classe de base pour toutes les exceptions d’argument. Aucun (utilisez une classe dérivée de cette exception).
ArgumentNullException Générée par des méthodes qui n'autorisent pas qu'un argument soit nul. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Levée par les méthodes qui vérifient que les arguments sont inclus dans une plage donnée. String s = "string";
s.Substring(s.Length+1);

Voir aussi