Condividi tramite


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#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#