Gestion et levée d’exceptions dans .NET
Les applications doivent pouvoir gérer de manière cohérente les erreurs qui se produisent au moment de l'exécution. .NET fournit un modèle pour avertir les applications de façon uniforme de la présence d’erreurs : les opérations .NET indiquent un échec en levant des exceptions.
Exceptions
Une exception est une condition d'erreur ou un comportement inattendu rencontré par un programme en cours d'exécution. Les exceptions peuvent être levées à cause d’une erreur dans votre code ou dans le code que vous appelez (une bibliothèque partagée, par exemple), de ressources de système d’exploitation non disponibles, de conditions inattendues rencontrées par le runtime (du code qui ne peut pas être vérifié, par exemple), etc. Votre application peut récupérer suite à certaines de ces conditions, mais pas toutes. Bien que vous puissiez récupérer suite à la plupart des exceptions d'application, vous ne pouvez pas récupérer suite à la plupart des exceptions runtime.
Dans .NET, une exception est un objet qui hérite de la classe System.Exception. Une exception est levée à partir d'une partie du code où un problème s'est produit. L'exception remonte la pile jusqu'à sa prise en charge par l'application ou l'arrêt du programme.
Exceptions et méthodes traditionnelles de gestion des erreurs
Traditionnellement, le modèle de gestion des erreurs d'un langage reposait soit sur le mode unique utilisé par le langage en question pour détecter des erreurs et leur trouver des gestionnaires appropriés, soit 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 gestion et la levée des exceptions fonctionne de la même façon pour les langages de programmation .NET.
ne requiert aucune syntaxe particulière pour la gestion des exceptions, mais laisse chaque langage définir sa propre syntaxe.
Les exceptions peuvent être levées au-delà des limites des processus et même des ordinateurs.
Un 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 des erreurs, comme les codes de retour. Les erreurs ne passent pas inaperçues, car si une exception est levée et que vous ne la gérez pas, le runtime arrête votre application. Les valeurs non valides ne continuent pas à se propager dans le système parce que du code n’a pas pu vérifier un code de retour d’échec.
Exceptions courantes
Le tableau suivant répertorie certaines exceptions courantes avec des exemples de cause possible.
Type d'exception | Description | 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 en cas d’indexation incorrecte du tableau. | Indexation d’un tableau en dehors de sa plage valide :arr[arr.Length+1] |
NullReferenceException | Levée par le runtime uniquement si 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. | Appel de 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 | Levée par les méthodes qui n’acceptent pas la valeur Null pour un argument. | 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
- Exception, classe et propriétés
- Guide pratique pour utiliser le bloc try/catch pour intercepter des exceptions
- Guide pratique pour utiliser des exceptions spécifiques dans un bloc Catch
- Procédure : lever explicitement des exceptions
- Guide pratique pour créer des exceptions User-Defined
- Utilisation de gestionnaires filtrés par l'utilisateur
- Guide pratique pour utiliser les blocs Finally
- Gestion des exceptions COM Interop
- Meilleures pratiques pour les exceptions
- What Every Dev needs to Know About Exceptions in the Runtime