Gewusst wie: Explizites Auslösen von Ausnahmen
Aktualisiert: November 2007
Mit der throw-Anweisung können Sie eine Ausnahme explizit auslösen. Mit der throw-Anweisung können Sie auch eine abgefangene Ausnahme erneut auslösen. Es ist sinnvoll, einer erneut ausgelösten Ausnahme Informationen hinzuzufügen, um mehr Informationen für das Debuggen bereitstellen zu können.
Im folgenden Beispielcode wird ein try/catch-Block verwendet, um eine mögliche FileNotFoundException abzufangen. Auf den try-Block folgt ein catch-Block, der die FileNotFoundException abfängt und eine Meldung an die Konsole ausgibt, wenn die Textdatei nicht gefunden wurde. Als Nächstes folgt eine throw-Anweisung, die eine neue FileNotFoundException auslöst und Textinformationen zur Ausnahme hinzufügt.
Beispiel
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();
}
}
}
Siehe auch
Aufgaben
Gewusst wie: Verwenden des Try-Catch-Blocks zum Abfangen von Ausnahmen
Gewusst wie: Verwenden spezifischer Ausnahmen in einem Catch-Block
Gewusst wie: Verwenden von Finally-Blöcken