Delen via


Uitzonderingen expliciet genereren

U kunt expliciet een uitzondering genereren met behulp van de C# throw of de Visual Basic-instructie Throw . U kunt ook een onderschepte uitzondering opnieuw genereren met behulp van de throw instructie. Het is een goede gewoonte om informatie toe te voegen aan een uitzondering die opnieuw wordt gebruikt om meer informatie te geven bij het opsporen van fouten.

In het volgende codevoorbeeld wordt een try/catch blok gebruikt om een mogelijk FileNotFoundExceptionte vangen. Het volgen van het try blok is een catch blok dat het FileNotFoundException betrapt en een bericht naar de console schrijft als het gegevensbestand niet wordt gevonden. De volgende instructie is de throw instructie waarmee een nieuwe FileNotFoundException wordt gegenereerd en tekstinformatie wordt toegevoegd aan de uitzondering.

var fs = default(FileStream);
try
{
    // Open a text tile.
    fs = new FileStream(@"C:\temp\data.txt", FileMode.Open);
    var sr = new StreamReader(fs);

    // Read a value from the file and output to the console.
    string? line = sr.ReadLine();
    Console.WriteLine(line);
}
catch (FileNotFoundException e)
{
    Console.WriteLine($"[Data File Missing] {e}");
    throw new FileNotFoundException(@"[data.txt not in c:\temp directory]", e);
}
finally
{
    fs?.Close();
}
Option Strict On

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)

            ' A value is read from the file and output to the console.
            Dim line As String = sr.ReadLine()
            Console.WriteLine(line)
        Catch e As FileNotFoundException
            Console.WriteLine($"[Data File Missing] {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

Zie ook