Partager via


Gestion des erreurs et des exceptions (Visual C# Express)

Mise à jour : novembre 2007

Lorsqu'un problème survient au cours de l'exécution d'un programme C#, une exception se produit. Les exceptions interrompent le flux du programme en cours et, si rien n'est fait, le programme cesse tout simplement de s'exécuter. Les exceptions peuvent être provoquées par un bogue dans le programme (par exemple, un nombre divisé par zéro) ou résulter d'une entrée inattendue (un utilisateur sélectionne un fichier inexistant). En tant que programmeur, vous devez autoriser votre programme à gérer ces problèmes sans tomber en panne.

C# fournit plusieurs mots clés - try, catch et finally- qui permettent aux programmes de détecter les exceptions, de les gérer et de poursuivre l'exécution. Ce sont des outils très utiles pour fiabiliser vos applications.

Try et Catch

Les mots clés try et catch s'utilisent ensemble. Utilisez try pour englober le bloc de code que vous soupçonnez de pouvoir générer une exception, et catch pour contenir le code à exécuter si l'exception se produit. Dans cet exemple, un calcul crée une exception de division par zéro, qui est ensuite interceptée. Sans les blocs try et catch, ce programme échouerait.

class ProgramTryCatch
{
    static void Main()
    {
        int x=0, y=0;

        try
        {
            x = 10 / y;
        }

        catch (System.DivideByZeroException)
        {
            System.Console.WriteLine("There was an attempt to divide by zero.");
        }
    }
}

Nous vous conseillons d'être précis quant au type d'exception que votre code catch détecte. Chaque try peut avoir plusieurs instructions catch, chacune traitant une exception différente.

Blocs finally

Le code contenu dans un bloc finally est toujours exécuté, qu'une exception se produise ou non. Utilisez le bloc finally pour vous assurer que des ressources sont retournées : par exemple, pour vérifier qu'un fichier est fermé.

try
{
    // Code to try here.
}
catch (SomeSpecificException ex)
{
    // Code to handle exception here.
}
finally
{
    // Code to execute after try (and possibly catch) here.
}

Utilisation de la gestion des exceptions

Une exception ne signifie pas toujours qu'une catastrophe a eu lieu dans votre programme. Elles constituent souvent un moyen pratique de quitter une section de code qui ne s'applique plus, ou de signaler qu'une méthode a échoué. Un grand nombre de méthodes de classe .NET Framework créent des exceptions pour prévenir de l'existence d'une condition particulière.

Vous pouvez également provoquer vos propres exceptions à l'aide du mot clé throw. Par exemple :

class ProgramThrow
{
    static void DoWork(int x)
    {
        if (x > 5)
        {
            throw new System.ArgumentOutOfRangeException("X is too large");
        }
    }

    static void Main()
    {
        try
        {
            DoWork(10);
        }
        catch (System.ArgumentOutOfRangeException ex)
        {
            System.Console.WriteLine(ex.Message);
        }
    }
}

Utilisez des exceptions dans vos programmes lorsque vous pensez qu'une situation inattendue risque de survenir. Par exemple, lorsque vous traitez des données entrées par un utilisateur, lisez un fichier ou accédez à des informations sur Internet.

Voir aussi

Tâches

Comment : intercepter une exception (Visual C#)

Concepts

Initiation au langage C#

Référence

Instructions de gestion des exceptions (Référence C#)

throw (Référence C#)

try-catch (Référence C#)

try-finally (Référence C#)

try-catch-finally (Référence C#)