Types d'exceptions
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 24 sur 66.
En C#, les exceptions sont classées en différents types en fonction de l'erreur qu'elles représentent. Comprendre ces types vous aide à gérer les erreurs plus efficacement.
Voyons les types d'exceptions courants :
La classe de base pour toutes les exceptions est System.Exception.
try
{
// Code qui pourrait lever une exception
}
catch (Exception ex)
{
// Gérer n'importe quelle exception
Console.WriteLine(ex.Message);
}Quelques types d'exceptions courants :
ArgumentException : Levée lorsqu'une méthode est appelée avec un argument non valide.
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException : Levée lorsque vous tentez d'accéder à un membre sur une référence nulle.
string text = null;
// Cela lèvera une NullReferenceException
int length = text.Length;IndexOutOfRangeException : Lancée lorsqu'un index de tableau est en dehors des limites du tableau.
int[] numbers = { 1, 2, 3 };
// Cela lancera une IndexOutOfRangeException
int value = numbers[5];DivideByZeroException : levée lors de la division d'un entier par zéro.
int result = 10 / 0; // Cela lèvera une DivideByZeroExceptionVous pouvez intercepter des exceptions spécifiques :
try
{
int[] numbers = { 1, 2, 3 };
int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General error: " + ex.Message);
}Défi
FacileCréez une méthode nommée ProcessArray qui :
- Prend un tableau d'entiers et un index en paramètres
- Tente d'accéder à l'élément à l'index spécifié
- Retourne la valeur de l'élément en cas de succès
- Si une
IndexOutOfRangeExceptionse produit, capturez-la et retournez -1
Votre méthode doit avoir cette signature :
public static int ProcessArray(int[] array, int index)Aide-mémoire
La classe de base pour toutes les exceptions est System.Exception :
try
{
// Code qui pourrait lever une exception
}
catch (Exception ex)
{
// Gérer n'importe quelle exception
Console.WriteLine(ex.Message);
}Types d'exceptions courants :
ArgumentException : Levée lorsqu'une méthode est appelée avec un argument non valide :
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException : Levée lors de l'accès à un membre sur une référence nulle :
string text = null;
int length = text.Length; // Lève NullReferenceExceptionIndexOutOfRangeException : Levée lorsque l'index d'un tableau est hors limites :
int[] numbers = { 1, 2, 3 };
int value = numbers[5]; // Lève IndexOutOfRangeExceptionDivideByZeroException : Levée lors de la division d'un entier par zéro :
int result = 10 / 0; // Lève DivideByZeroExceptionIntercepter des exceptions spécifiques :
try
{
int[] numbers = { 1, 2, 3 };
int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General error: " + ex.Message);
}Essayez vous-même
using System;
class Program
{
public static int ProcessArray(int[] array, int index)
{
// Écrivez votre code ici
return 0;
}
static void Main(string[] args)
{
// Lire l'entrée du tableau
string input = Console.ReadLine();
// Supprimer les crochets s'ils sont présents
if (input.StartsWith("[") && input.EndsWith("]"))
{
input = input.Substring(1, input.Length - 2);
}
string[] parts = input.Split(',');
int[] array = new int[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
array[i] = int.Parse(parts[i].Trim());
}
// Lire l'entrée de l'index
int index = int.Parse(Console.ReadLine());
int result = ProcessArray(array, index);
Console.WriteLine(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