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

Mise à jour : novembre 2007

Le bloc finally est utile pour nettoyer les ressources allouées dans le bloc try, ainsi que pour exécuter tout code devant s'exécuter même lors d'une exception. Le contrôle est toujours transmis au bloc finally quelle que soit la méthode de sortie du bloc try.

Tandis que catch est utilisé pour gérer les exceptions qui se produisent dans un bloc d'instructions, finally sert à garantir l'exécution d'un bloc d'instructions de code quelle que soit la méthode de sortie du bloc try précédent.

Exemple

Dans cet exemple, une instruction de conversion non valide provoque une exception. Lorsque vous exécuterez le programme, vous obtiendrez un message d'erreur d'exécution, mais finally sera néanmoins exécuté et affichera le résultat.

public class ThrowTest
{
    static void Main()
    {
        int i = 123;
        string s = "Some string";
        object o = s;

        try
        {
            // Invalid conversion; o contains a string not an int
            i = (int)o;
        }
        finally
        {
            Console.Write("i = {0}", i);
        }
    }
}

L'exemple ci-dessus entraîne la levée d'une exception System.InvalidCastException.

Bien qu'une exception ait été interceptée, l'instruction de résultat incluse dans le bloc finally sera quand même exécutée :

i = 123

Pour plus d'informations sur finally, consultez try-catch-finally.

C# fournit également l'instruction using dont la syntaxe pratique offre exactement les mêmes fonctionnalités qu'une instruction try-finally.

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 5.3.3.14 Instructions try-finally

  • 8.11 L'instruction try

  • 16 Exceptions

Voir aussi

Tâches

Comment : lever explicitement des exceptions

Concepts

Guide de programmation C#

Référence

Mots clés C#

The try, catch, and throw Statements

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

throw (Référence C#)

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

Autres ressources

Référence C#