Gestion 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".
En général, 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 votre code, mais les erreurs d'exécution sont généralement imprévisibles et dépendent souvent de paramètres incertains.
Par exemple, si le chemin du 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
afin de tenter d'exécuter un code, et en cas d'échec, de capturer et de gérer l'erreur au lieu de laisser le programme planter.
Voici la syntaxe du bloc try-catch
:
index.cs
1234567try { // 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
1234567891011121314151617using 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); } } }
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 se produire :
Division par zéro
index.cs
123456789101112131415161718using 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
1234567891011121314151617using 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
123456789101112131415161718192021using 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
:
index.cs
12345678910111213141516171819202122232425using 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# ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 2.04
Gestion 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".
En général, 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 votre code, mais les erreurs d'exécution sont généralement imprévisibles et dépendent souvent de paramètres incertains.
Par exemple, si le chemin du 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
afin de tenter d'exécuter un code, et en cas d'échec, de capturer et de gérer l'erreur au lieu de laisser le programme planter.
Voici la syntaxe du bloc try-catch
:
index.cs
1234567try { // 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
1234567891011121314151617using 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); } } }
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 se produire :
Division par zéro
index.cs
123456789101112131415161718using 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
1234567891011121314151617using 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
123456789101112131415161718192021using 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
:
index.cs
12345678910111213141516171819202122232425using 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# ?
Merci pour vos commentaires !