Blocs Catch multiples
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 25 sur 66.
Les blocs catch multiples vous permettent de gérer différents types d'exceptions avec un code spécifique pour chaque type d'exception.
Commencez par un bloc try basique :
try
{
int number = int.Parse("abc");
}
Ajoutez un bloc catch pour une exception spécifique :
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Vous pouvez ajouter plusieurs blocs catch pour gérer différentes exceptions :
try
{
int number = int.Parse("abc");
int result = a10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Le premier bloc catch correspondant s'exécutera. Ordonnez vos blocs catch des types d'exception les plus spécifiques aux plus généraux.
Défi
FacileCréez une méthode nommée DivideNumbers qui prend deux paramètres string :
numeratorStr: une chaîne représentant le numérateurdenominatorStr: une chaîne représentant le dénominateur
La méthode doit :
- Tenter d'analyser les deux chaînes en entiers
- Tenter de diviser le numérateur par le dénominateur
- Retourner le résultat sous forme d'entier
- Gérer FormatException en affichant "Invalid format" et en retournant 0
- Gérer DivideByZeroException en affichant "Cannot divide by zero" et en retournant 0
- Gérer toute autre exception avec un bloc catch général qui affiche "An error occurred" et retourne 0
Aide-mémoire
Les blocs catch multiples vous permettent de gérer différents types d'exceptions avec du code spécifique pour chaque type d'exception.
try-catch de base avec exception spécifique :
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Blocs catch multiples pour différentes exceptions :
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Le premier bloc catch correspondant s'exécutera. Classez les blocs catch du plus spécifique au plus général des types d'exceptions.
Essayez vous-même
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Écrivez votre code ici
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety