Sobes.tech
Intern

Qu'est-ce que les exceptions dans le langage de programmation C#?

sobes.tech IA

Réponse de l'IA

Les exceptions en C# sont des situations anormales ou des erreurs qui surviennent lors de l'exécution du programme et interrompent son flux normal.

Elles permettent de séparer le code de gestion des erreurs du code principal de la logique de l'application et offrent une approche plus structurée pour gérer les erreurs.

Principaux aspects des exceptions en C# :

  1. Types d'exceptions : C# possède une hiérarchie de classes d'exceptions standard héritant de la classe de base System.Exception. Par exemple, System.NullReferenceException, System.DivideByZeroException, System.IO.FileNotFoundException. Il est également possible de créer des classes d'exceptions personnalisées.
  2. Génération d'exceptions (throw) : L'exception est générée à l'aide du mot-clé throw.
  3. Capture d'exceptions (try-catch) : Le bloc try contient le code susceptible de générer une exception. Le bloc catch intercepte un type spécifique d'exception et exécute le code pour la gérer.
  4. Bloc finally : Le bloc finally s'exécute toujours, que l'exception ait été levée ou non. Il est souvent utilisé pour libérer des ressources.
  5. Opérateur using : Méthode plus pratique pour gérer les ressources, garantissant l'appel de la méthode Dispose. Il est similaire à la construction try-finally pour les objets qui implémentent l'interface IDisposable.
  6. Filtres d'exceptions : Permettent d'ajouter une condition au bloc catch pour une gestion plus spécifique des exceptions.

Exemple d'utilisation :

public class Example
{
    public void ProcessData(int denominator)
    {
        try
        {
            int result = 10 / denominator; // Peut générer DivideByZeroException
            Console.WriteLine($"Résultat : {result}");
        }
        catch (DivideByZeroException ex) // Capture une exception spécifique
        {
            Console.WriteLine("Erreur : Impossible de diviser par zéro.");
            // Journalisation de l'exception, si nécessaire
            // Console.WriteLine($"Détails de l'exception : {ex.Message}");
        }
        catch (Exception ex) // Capture toute autre exception
        {
            Console.WriteLine($"Une erreur inattendue est survenue : {ex.Message}");
        }
        finally // Ce bloc s'exécutera toujours
        {
            Console.WriteLine("Traitement terminé.");
        }
    }

    public void UsingExample()
    {
        // Exemple d'utilisation de using pour appeler automatiquement Dispose
        using (StreamReader reader = new StreamReader("file.txt"))
        {
            string line = reader.ReadLine();
            Console.WriteLine(line);
        } // Ici, reader.Dispose() est appelé automatiquement, même si une exception survient
    }

    public void ThrowExample(int value)
    {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(value), "La valeur doit être non négative."); // Génération d'une exception personnalisée
        }
        // ... logique supplémentaire
    }
}

L'utilisation des exceptions permet de créer des applications plus robustes, lisibles et maintenables, en séparant la gestion des erreurs de la logique principale.