Condividi tramite


Procedura: generare eccezioni in modo esplicito

È possibile generare in modo esplicito un'eccezione mediante l'istruzione throw. Tale istruzione consente inoltre di generare nuovamente un'eccezione già intercettata. Nella scrittura del codice è buona norma aggiungere informazioni alle eccezioni che vengono generate nuovamente, in modo da fornire ulteriori informazioni in sede di debug.

Nell'esempio di codice seguente viene utilizzato un blocco try/catch per intercettare una possibile eccezione FileNotFoundException. Il blocco try è seguito da un blocco catch che intercetta l'eccezione FileNotFoundExceptione scrive un messaggio nella console se il file di dati non viene trovato. L'istruzione successiva rappresenta l'istruzione throw che genera una nuova eccezione FileNotFoundException aggiungendovi del testo informativo.

Esempio

Option Strict On

Imports System
Imports System.IO

Public Class ProcessFile

   Public Shared Sub Main()
      Dim fs As FileStream = Nothing
      Try
          'Opens a text file.
          fs = New FileStream("c:\temp\data.txt", FileMode.Open)
          Dim sr As New StreamReader(fs)
          Dim line As String

          'A value is read from the file and output to the console.
          line = sr.ReadLine()
          Console.WriteLine(line)
      Catch e As FileNotFoundException
          Console.WriteLine("[Data File Missing] {0}", e)
          Throw New FileNotFoundException("[data.txt not in c:\temp directory]", e)
      Finally
          If fs IsNot Nothing Then fs.Close
      End Try
   End Sub 
End Class 
using System;
using System.IO;

public class ProcessFile
{
   public static void Main()
      {
      FileStream fs = null;
      try   
      {
         //Opens a text tile.
         fs = new FileStream(@"C:\temp\data.txt", FileMode.Open);
         StreamReader sr = new StreamReader(fs);
         string line;

         //A value is read from the file and output to the console.
         line = sr.ReadLine();
         Console.WriteLine(line);
      }
      catch(FileNotFoundException e)
      {
         Console.WriteLine("[Data File Missing] {0}", e);
         throw new FileNotFoundException(@"[data.txt not in c:\temp directory]",e);
      }
      finally
      {
         if (fs != null) 
            fs.Close();
      }
   }
}

Vedere anche

Attività

Procedura: utilizzare il blocco try/catch per l'intercettazione di eccezioni

Procedura: utilizzare eccezioni specifiche in un blocco catch

Procedura: utilizzare blocchi Finally

Altre risorse

Nozioni fondamentali sulla gestione delle eccezioni