Gewusst wie: Explizites Auslösen von Ausnahmen

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

Weitere Ressourcen

Grundlagen der Ausnahmebehandlung