Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Classe d’exception et propriétés
- Guide pratique pour utiliser le bloc Try-Catch pour intercepter les exceptions
- Guide pratique : utiliser des exceptions spécifiques dans un bloc Catch
- Guide pratique pour lever explicitement des exceptions
- Guide pratique pour créer des exceptions User-Defined
- Utilisation des gestionnaires d’exception User-Filtered
- Guide pratique pour utiliser les blocs Finally
- Gestion des exceptions COM Interop
- Meilleures pratiques pour les exceptions
- Qu’est-ce que chaque développement doit savoir sur les exceptions dans le runtime