Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Gestion des Erreurs | Structures de Données et Gestion des Fichiers
C# Au-Delà des Bases

bookGestion des Erreurs

Vous avez peut-être déjà rencontré le terme erreur d'exécution dans les chapitres précédents. Une erreur d'exécution est une erreur qui se produit pendant l'exécution du programme – d'où le nom "erreur d'exécution".

Généralement, lorsqu'une erreur d'exécution survient, le programme plante ou cesse de répondre.

Le compilateur peut vous aider en signalant la plupart des erreurs dans le code, mais les erreurs d'exécution sont pour la plupart imprévisibles et dépendent souvent de paramètres incertains.

Par exemple, si le chemin de fichier passé à StreamReader est invalide ou n'existe pas, cela provoquera une erreur d'exécution et le programme plantera. Par conséquent, il est courant d'encapsuler ce type de code risqué dans des blocs try-catch pour tenter d'exécuter un code, et en cas d'échec, intercepter et gérer l'erreur au lieu de laisser le programme planter.

Voici la syntaxe du bloc try-catch :

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Ici, Exception est un mot-clé qui représente le type de données Exception.

Exemple

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Remarque

Nous pouvons omettre la partie (Exception error) de l'instruction catch si nous n'utilisons pas error.

Voici quelques cas courants où une erreur d'exécution peut survenir :

Division par zéro

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Index non valide d’un tableau ou d’une liste

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Clé non trouvée (pour les dictionnaires) :

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Le bloc finally

Il existe également un bloc de code optionnel appelé finally qui est exécuté après l'exécution du bloc catch. Le bloc finally sera toujours exécuté après les blocs try et catch, qu'une exception ait été levée ou non. Cela garantit que tout code à l'intérieur de finally s'exécute à chaque fois, ce qui le rend utile pour des tâches telles que la fermeture de fichiers ou la libération de ressources.

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Quel sera le résultat du programme suivant ?

2. En C#, quel est le but du bloc finally ?

3. Laquelle des affirmations suivantes est vraie concernant le bloc try-catch en C# ?

question mark

Quel sera le résultat du programme suivant ?

Select the correct answer

question mark

En C#, quel est le but du bloc finally ?

Select the correct answer

question mark

Laquelle des affirmations suivantes est vraie concernant le bloc try-catch en C# ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 9

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What are some other examples of runtime errors?

Can you explain how the try-catch block works with a code example?

What is the difference between compile-time and runtime errors?

Awesome!

Completion rate improved to 2.04

bookGestion des Erreurs

Glissez pour afficher le menu

Vous avez peut-être déjà rencontré le terme erreur d'exécution dans les chapitres précédents. Une erreur d'exécution est une erreur qui se produit pendant l'exécution du programme – d'où le nom "erreur d'exécution".

Généralement, lorsqu'une erreur d'exécution survient, le programme plante ou cesse de répondre.

Le compilateur peut vous aider en signalant la plupart des erreurs dans le code, mais les erreurs d'exécution sont pour la plupart imprévisibles et dépendent souvent de paramètres incertains.

Par exemple, si le chemin de fichier passé à StreamReader est invalide ou n'existe pas, cela provoquera une erreur d'exécution et le programme plantera. Par conséquent, il est courant d'encapsuler ce type de code risqué dans des blocs try-catch pour tenter d'exécuter un code, et en cas d'échec, intercepter et gérer l'erreur au lieu de laisser le programme planter.

Voici la syntaxe du bloc try-catch :

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Ici, Exception est un mot-clé qui représente le type de données Exception.

Exemple

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Remarque

Nous pouvons omettre la partie (Exception error) de l'instruction catch si nous n'utilisons pas error.

Voici quelques cas courants où une erreur d'exécution peut survenir :

Division par zéro

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Index non valide d’un tableau ou d’une liste

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Clé non trouvée (pour les dictionnaires) :

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Le bloc finally

Il existe également un bloc de code optionnel appelé finally qui est exécuté après l'exécution du bloc catch. Le bloc finally sera toujours exécuté après les blocs try et catch, qu'une exception ait été levée ou non. Cela garantit que tout code à l'intérieur de finally s'exécute à chaque fois, ce qui le rend utile pour des tâches telles que la fermeture de fichiers ou la libération de ressources.

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Quel sera le résultat du programme suivant ?

2. En C#, quel est le but du bloc finally ?

3. Laquelle des affirmations suivantes est vraie concernant le bloc try-catch en C# ?

question mark

Quel sera le résultat du programme suivant ?

Select the correct answer

question mark

En C#, quel est le but du bloc finally ?

Select the correct answer

question mark

Laquelle des affirmations suivantes est vraie concernant le bloc try-catch en C# ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 9
some-alt