Chargement...

Gestion des exceptions en C# (try, catch, finally)

Apprenez à gérer les exceptions en C# avec les blocs try, catch et finally afin de traiter les erreurs de manière sûre avec exemples.

En C#, la gestion des erreurs permet d’intercepter et de contrôler les situations inattendues pendant l’exécution du programme. Cela évite un arrêt brutal et permet d’afficher un message approprié ou d’exécuter une action alternative. La gestion des erreurs utilise ensemble les blocs try, catch et finally.


Utilisation de try-catch

Le bloc try contient du code pouvant générer une exception. Si une erreur survient, le bloc catch l’intercepte.


try
{
    int nombre = int.Parse("abc"); // Conversion invalide
    Console.WriteLine("Nombre: " + nombre);
}
catch (FormatException ex)
{
    Console.WriteLine("Erreur : format de nombre invalide.");
}
// Sortie :
Erreur : format de nombre invalide.

Plusieurs blocs catch

Il est possible d’utiliser plusieurs catch pour différents types d’erreurs. Chaque type d’exception peut ainsi être traité séparément.


try
{
    int[] nombres = { 1, 2, 3 };
    Console.WriteLine(nombres[5]); // Dépassement d’indice
}
catch (IndexOutOfRangeException)
{
    Console.WriteLine("Erreur : indice de tableau hors limites.");
}
catch (Exception ex)
{
    Console.WriteLine("Erreur inattendue : " + ex.Message);
}

Bloc finally

Le bloc finally est toujours exécuté, qu’une erreur survienne ou non. Il est souvent utilisé pour libérer des ressources comme fermer des fichiers ou des connexions.


try
{
    Console.WriteLine("Ouverture du fichier...");
    throw new Exception("Fichier introuvable !");
}
catch (Exception ex)
{
    Console.WriteLine("Erreur : " + ex.Message);
}
finally
{
    Console.WriteLine("Fermeture du fichier...");
}
// Sortie :
Ouverture du fichier...
Erreur : Fichier introuvable !
Fermeture du fichier...

Lancer des exceptions personnalisées

Vous pouvez définir vos propres conditions d’erreur et lancer des exceptions avec throw.


static void Diviser(int a, int b)
{
    if (b == 0)
        throw new DivideByZeroException("Erreur : division par zéro !");
    Console.WriteLine("Résultat : " + (a / b));
}

static void Main()
{
    try
    {
        Diviser(10, 0);
    }
    catch (DivideByZeroException ex)
    {
        Console.WriteLine("Erreur : " + ex.Message);
    }
}
// Sortie :
Erreur : division par zéro !

En résumé

  • try : Bloc contenant du code susceptible de générer une exception.
  • catch : Intercepte et traite l’erreur.
  • finally : S’exécute toujours, souvent pour nettoyer les ressources.
  • throw : Permet de lancer des exceptions personnalisées.
  • Plusieurs catch permettent de traiter différents types d’erreurs.