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