Utilizzo del blocco finally

Quando si verifica un'eccezione, l'esecuzione si interrompe e il controllo passa al più vicino gestore eccezioni. Questo comporta spesso la mancata esecuzione di righe di codice che si prevede invece vengano sempre chiamate. È necessario che una certa pulitura delle risorse, quale la chiusura di un file, venga sempre eseguita, anche quando viene generata un'eccezione. A tale scopo è possibile utilizzare un blocco finally. I blocchi finally vengono sempre eseguiti, indipendentemente dal verificarsi di eventuali eccezioni.

Nell'esempio di codice che segue viene utilizzato un blocco try/catch per intercettare un'eccezione ArgumentOutOfRangeException. Il metodo Main crea due matrici e tenta di copiarne una nell'altra. In seguito a questa operazione viene generata un'eccezione ArgumentOutOfRangeException e l'errore viene scritto nella console. Il blocco finally viene eseguito indipendentemente dall'esito dell'operazione di copia.

Imports System
Class ArgumentOutOfRangeExample
   
   Public Shared Sub Main()
      Dim array1 As Integer() =  {0, 0}
      Dim array2 As Integer() =  {0, 0}
      Try
         Array.Copy(array1, array2, - 1)
      Catch e As ArgumentOutOfRangeException
         Console.WriteLine("Error: {0}", e)
      Finally
         Console.WriteLine("This statement is always executed.")
      End Try
   End Sub 'Main
End Class 'ArgumentOutOfRangeExample
[C#]
using System;
class ArgumentOutOfRangeExample
   {
   static public void Main()
      {
      int[] array1={0,0};
      int[] array2={0,0};
         try
         {
         Array.Copy(array1,array2,-1);
         }
         catch (ArgumentOutOfRangeException e)
         {
         Console.WriteLine("Error: {0}",e);
         }
         finally
         {
         Console.WriteLine("This statement is always executed.");
         }
      }
   }

Vedere anche

Utilizzo del blocco try/catch per l'intercettazione delle eccezioni | Generazione di eccezioni | Utilizzo di eccezioni definite dall'utente | Nozioni fondamentali sulla gestione delle eccezioni