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
Référence
The try, catch, and throw Statements
Instructions de gestion des exceptions (Référence C#)