Défi : Gestion des Erreurs
La syntaxe try-catch
possède une extension permettant d'intercepter des types d'erreurs spécifiques et de les traiter séparément :
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Le type Exception
utilisé dans le chapitre précédent intercepte tous les types d'erreurs, mais il existe des sous-types de Exception
qui permettent de gérer des erreurs plus spécifiques. Voici quelques types d'exceptions courants :
DivideByZeroException
: division par zéro ;FileNotFoundException
: le fichier auquel on tente d'accéder n'existe pas ;KeyNotFoundException
: la clé du dictionnaire n'existe pas ;IndexOutOfRangeException
: l'indice spécifié d'un tableau ou d'une liste est invalide.
Le terme errorVarName
désigne une variable qui stocke l'objet Exception et contient des informations telles que le message d'erreur, accessible via errorVarName.Message
. Il est possible de l'omettre si elle n'est pas utilisée :
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Voici un exemple d'utilisation de ce type de bloc try-catch
:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
En utilisant maintenant ces concepts. Complétez les espaces vides avec les types d'exceptions appropriés dans le code suivant pour terminer le défi.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Utiliser le type d'exception pertinent pour chaque bloc catch
. Lire le code et déterminer quel bloc catch
est le plus approprié pour gérer un certain type d'exception.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
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
Défi : Gestion des Erreurs
Glissez pour afficher le menu
La syntaxe try-catch
possède une extension permettant d'intercepter des types d'erreurs spécifiques et de les traiter séparément :
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Le type Exception
utilisé dans le chapitre précédent intercepte tous les types d'erreurs, mais il existe des sous-types de Exception
qui permettent de gérer des erreurs plus spécifiques. Voici quelques types d'exceptions courants :
DivideByZeroException
: division par zéro ;FileNotFoundException
: le fichier auquel on tente d'accéder n'existe pas ;KeyNotFoundException
: la clé du dictionnaire n'existe pas ;IndexOutOfRangeException
: l'indice spécifié d'un tableau ou d'une liste est invalide.
Le terme errorVarName
désigne une variable qui stocke l'objet Exception et contient des informations telles que le message d'erreur, accessible via errorVarName.Message
. Il est possible de l'omettre si elle n'est pas utilisée :
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Voici un exemple d'utilisation de ce type de bloc try-catch
:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
En utilisant maintenant ces concepts. Complétez les espaces vides avec les types d'exceptions appropriés dans le code suivant pour terminer le défi.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Utiliser le type d'exception pertinent pour chaque bloc catch
. Lire le code et déterminer quel bloc catch
est le plus approprié pour gérer un certain type d'exception.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
Merci pour vos commentaires !