Partager via


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

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;

                Console.WriteLine("WriteLine at the end of the try block.");
            }
            finally
            {
                // To run the program in Visual Studio, type CTRL+F5. Then 
                // click Cancel in the error dialog.
                Console.WriteLine("\nThe finally block is executed, even though"
                    + " an error was caught in the try block.");
                Console.WriteLine("i = {0}", i);
            }
        }
        // Output:
        // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
        // at ValueEquality.ThrowTest.Main() in c:\users\sahnnyj\documents\visual studio
        // 2010\Projects\ConsoleApplication9\Program.cs:line 21
        //
        // The finally block is executed, even though an error was caught in the try block.
        // i = 123
    }

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 la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Tâches

Comment : lever explicitement des exceptions

Référence

Mots clés C#

try, catch, and throw Statements (C++)

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

throw (référence C#)

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

Concepts

Guide de programmation C#

Autres ressources

Référence C#

Historique des modifications

Date

Historique

Motif

Mai 2010

A ajouté des instructions d'écriture dans l'exemple pour clarifier les résultats.

Commentaires client.