C# - Gestion des exceptions
Une exception est un problème qui survient lors de l'exécution d'un programme. Une exception C# est une réponse à une circonstance exceptionnelle qui survient pendant l'exécution d'un programme, comme une tentative de division par zéro.
Les exceptions permettent de transférer le contrôle d'une partie d'un programme à une autre. La gestion des exceptions C# repose sur quatre mots-clés :try , attraper , enfin , et lancer .
-
essayez − Un bloc try identifie un bloc de code pour lequel des exceptions particulières sont activées. Il est suivi d'un ou plusieurs blocs catch.
-
attraper − Un programme attrape une exception avec un gestionnaire d'exceptions à l'endroit du programme où vous voulez traiter le problème. Le mot-clé catch indique la capture d'une exception.
-
enfin − Le bloc finally est utilisé pour exécuter un ensemble donné d'instructions, qu'une exception soit levée ou non. Par exemple, si vous ouvrez un fichier, il doit être fermé qu'une exception soit déclenchée ou non.
-
lancer − Un programme lève une exception lorsqu'un problème survient. Cela se fait à l'aide d'un mot-clé throw.
Syntaxe
En supposant qu'un bloc lève une exception, une méthode intercepte une exception en utilisant une combinaison des mots-clés try et catch. Un bloc try/catch est placé autour du code susceptible de générer une exception. Le code dans un bloc try/catch est appelé code protégé, et la syntaxe pour utiliser try/catch ressemble à ce qui suit −
try { // statements causing exception } catch( ExceptionName e1 ) { // error handling code } catch( ExceptionName e2 ) { // error handling code } catch( ExceptionName eN ) { // error handling code } finally { // statements to be executed }
Vous pouvez répertorier plusieurs instructions catch pour intercepter différents types d'exceptions au cas où votre bloc try déclencherait plus d'une exception dans différentes situations.
Classes d'exceptions en C#
Les exceptions C# sont représentées par des classes. Les classes d'exception en C# sont principalement directement ou indirectement dérivées de System.Exception classer. Certaines des classes d'exception dérivées de la classe System.Exception sont les System.ApplicationException et System.SystemException cours.
L'exception System.ApplicationException prend en charge les exceptions générées par les programmes d'application. Par conséquent, les exceptions définies par les programmeurs devraient dériver de cette classe.
L'exception System.SystemException class est la classe de base pour toutes les exceptions système prédéfinies.
Le tableau suivant fournit certaines des classes d'exception prédéfinies dérivées de la classe Sytem.SystemException −
Sr.No. | Classe d'exception et description |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 |
Gestion des exceptions
C# fournit une solution structurée à la gestion des exceptions sous la forme de blocs try et catch. À l'aide de ces blocs, les instructions de programme de base sont séparées des instructions de gestion des erreurs.
Ces blocs de gestion des erreurs sont implémentés à l'aide de try , attraper , et enfin mots clés. Voici un exemple de levée d'une exception lorsque la condition de division par zéro se produit −
Démo en directusing System; namespace ErrorHandlingApplication { class DivNumbers { int result; DivNumbers() { result = 0; } public void division(int num1, int num2) { try { result = num1 / num2; } catch (DivideByZeroException e) { Console.WriteLine("Exception caught: {0}", e); } finally { Console.WriteLine("Result: {0}", result); } } static void Main(string[] args) { DivNumbers d = new DivNumbers(); d.division(25, 0); Console.ReadKey(); } } }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at ... Result: 0
Créer des exceptions définies par l'utilisateur
Vous pouvez également définir votre propre exception. Les classes d'exception définies par l'utilisateur sont dérivées de l'Exception classer. L'exemple suivant le démontre −
Démo en directusing System; namespace UserDefinedException { class TestTemperature { static void Main(string[] args) { Temperature temp = new Temperature(); try { temp.showTemp(); } catch(TempIsZeroException e) { Console.WriteLine("TempIsZeroException: {0}", e.Message); } Console.ReadKey(); } } } public class TempIsZeroException: Exception { public TempIsZeroException(string message): base(message) { } } public class Temperature { int temperature = 0; public void showTemp() { if(temperature == 0) { throw (new TempIsZeroException("Zero Temperature found")); } else { Console.WriteLine("Temperature: {0}", temperature); } } }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
TempIsZeroException: Zero Temperature found
Lancer des objets
Vous pouvez lancer un objet s'il est directement ou indirectement dérivé de System.Exception classer. Vous pouvez utiliser une instruction throw dans le bloc catch pour lancer l'objet actuel en tant que −
Catch(Exception e) { ... Throw e }
Langue C
- C# en utilisant
- Gestion des fichiers C
- Gestion des exceptions Python à l'aide de l'instruction try, except et finally
- Gestion des exceptions Java
- Gestion des exceptions C++ :essayez, attrapez, lancez Exemple
- Gestion des exceptions Python :essayer, attraper, enfin et relancer [Exemple]
- Gestion des signaux C++
- Java 9 - Système de modules
- CPL contre DCS