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
try, catch, and throw Statements (C++)
Instructions de gestion des exceptions (Référence C#)
Concepts
Autres ressources
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Mai 2010 |
A ajouté des instructions d'écriture dans l'exemple pour clarifier les résultats. |
Commentaires client. |