try-finally (Riferimenti per C#)
Il blocco finally è utile per la pulizia di tutte le risorse allocate nel blocco try e per l'esecuzione di qualsiasi codice che è necessario eseguire anche in presenza di un'eccezione. Il controllo viene sempre passato al blocco finally, indipendentemente dalla modalità di uscita dal blocco try.
Note
Mentre catch viene utilizzato per gestire le eccezioni che si verificano nel blocco di istruzioni, finally viene utilizzato per garantire l'esecuzione di un blocco di istruzioni del codice indipendentemente dalla modalità di uscita dal blocco try che lo precede.
Esempio
In questo esempio è contenuta un'istruzione di conversione non valida che genera un'eccezione. Sebbene durante l'esecuzione del programma venga generato un errore di runtime, la clausola finally verrà comunque eseguita e il relativo output verrà visualizzato.
// try-finally
using System;
public class MainClass
{
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);
}
}
}
Commenti
Nell'esempio precedente viene generata un'eccezione System.InvalidCastException
.
L'istruzione di output contenuta nel blocco finally verrà comunque eseguita, nonostante sia stata intercettata un'eccezione:
i = 123
Per ulteriori informazioni su finally, vedere try-catch-finally.
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:
5.3.3.14 Istruzioni try-finally
8.11 Istruzione try
16 Eccezioni
Vedere anche
Attività
Procedura: generare eccezioni in modo esplicito
Riferimenti
Parole chiave di C#
The try, catch, and throw Statements
Istruzioni di gestione delle eccezioni (Riferimenti per C#)
throw (Riferimenti per C#)
try-catch (Riferimenti per C#)