C# Language Finalmente blocco


Esempio

try
{
    /* code that could throw an exception */
}
catch (Exception)
{
    /* handle the exception */
}
finally
{
    /* Code that will be executed, regardless if an exception was thrown / caught or not */
}

Il blocco try / catch / finally può essere molto utile durante la lettura da file.
Per esempio:

FileStream f = null;

try
{
    f = File.OpenRead("file.txt");
    /* process the file here */
}
finally
{
    f?.Close(); // f may be null, so use the null conditional operator.
}

Un blocco try deve essere seguito da un catch o da un blocco finally . Tuttavia, poiché non esiste un blocco catch, l'esecuzione causerà la chiusura. Prima della conclusione, verranno eseguite le istruzioni all'interno del blocco finally.

Nella lettura dei file avremmo potuto usare un blocco using come FileStream (ciò che OpenRead restituisce) implementa IDisposable .

Anche se c'è una dichiarazione di return nel blocco try , il blocco finally verrà eseguito di solito; ci sono alcuni casi in cui non lo faranno: