Contenu du cours
C# au-delà des Bases
C# au-delà des Bases
Pratiquer la Gestion des Erreurs
La syntaxe try-catch
a une syntaxe supplémentaire qui nous permet de capturer des types spécifiques d'erreurs et de les traiter séparément :
index
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Le type Exception
que nous avons utilisé dans le chapitre précédent capture simplement tous les types d'erreurs, cependant, il existe certains sous-types de Exception
qui capturent des types d'erreurs plus spécifiques. Voici quelques types d'exceptions courants :
DivideByZeroException
: Il y a une division par zéro ;FileNotFoundException
: Le fichier auquel nous accédons n'existe pas ;KeyNotFoundException
: La clé du dictionnaire n'existe pas ;IndexOutOfRangeException
: L'index spécifié d'un tableau ou d'une liste est invalide.
Le terme errorVarName
est une variable qui stocke l'objet Exception, et contient des informations comme le message d'erreur qui peut être accédé via errorVarName.Message
. Nous pouvons l'omettre dans le cas où nous ne l'utilisons pas :
index
try { // code } catch (ExceptionType) { // code } ... finally { // code }
Voici un exemple d'utilisation de ce type de bloc try-catch :
index
using 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; } } } }
Maintenant, en utilisant ces concepts. Remplissez les blancs avec les types d'exceptions pertinents dans le code suivant pour compléter le défi.
index
using 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"); } } } }
Merci pour vos commentaires !