Freigeben über


Gewusst wie: Abfangen einer Ausnahme in Visual Basic

Aktualisiert: November 2007

In diesem Beispiel wird gezeigt, wie Ausnahmen mit einem Try- und Catch-Block abgefangen werden.

Beispiel

In diesem Beispiel wird gezeigt, wie mit einem Try…Catch-Block eine OverflowException abgefangen wird.

Dieses Codebeispiel ist auch als IntelliSense-Codeausschnitt verfügbar. Sie finden das Element in der Codeausschnittauswahl unter Programmiersprache Visual Basic. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von Ausschnitten in den Code (Visual Basic).

Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
    Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
    MsgBox("Attempt to divide by zero resulted in overflow")
End Try

Für dieses Beispiel ist Folgendes erforderlich:

  • Ein Verweis auf den System-Namespace.

Im folgenden Codebeispiel wird ein Try...Catch-Block implementiert, der Exception, IOException sowie alle Ausnahmen verarbeitet, die von IOException abgeleitet sind.

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
    Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
    Throw pathTooLong
Catch ioEx As System.IO.IOException
    Throw ioEx
Catch security As System.Security.SecurityException
    Throw security
Catch ex As Exception
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

Fügen Sie den auszuführenden Code in den Try-Block ein.

Robuste Programmierung

Verwenden Sie diesen Codeblock als Ausgangspunkt, um eine Datenoperation in eine Try...Catch-Anweisung zu wrappen. Dieser Try...Catch-Block ist so konzipiert, dass alle Ausnahmen abgefangen und zurückgegeben werden. Möglicherweise ist dies nicht die richtige Wahl für das Projekt. Eine Abhandlung zu den Ausnahmebehandlungsoptionen finden Sie unter Empfohlene Vorgehensweise für die Verwendung von IntelliSense-Codeausschnitten.

Mit Windows Forms-Steuerelementen, wie z. B. der OpenFileDialog-Komponente (Windows Forms)-Komponente und den SaveFileDialog-Komponente (Windows Forms)-Komponentensteuerelementen, die die Benutzerauswahl auf gültige Dateinamen beschränken, können Sie die Wahrscheinlichkeit von Ausnahmen verringern. Die FileInfo.Exists-Eigenschaft kann überprüfen, ob eine Datei vorhanden ist, bevor Sie versuchen, diese Datei zu öffnen. Die Verwendung dieser Steuerelemente und Klassen bietet jedoch keine absolute Sicherheit. Zwischen dem Zeitpunkt, zu dem der Benutzer die Datei auswählt, und dem Zeitpunkt, zu dem der Code ausgeführt wird, kann sich das Dateisystem ändern. Beim Arbeiten mit Dateien ist eine Ausnahmebehandlung deshalb fast immer erforderlich.

Sicherheit

Die Assembly erfordert für viele Dateiaufgaben eine von der FileIOPermission -Klasse gewährte Berechtigungsebene. Falls der Code in einem teilweise vertrauenswürdigen Kontext ausgeführt wird, wird aufgrund unzureichender Berechtigungen u. U. eine Ausnahme ausgelöst. Weitere Informationen finden Sie unter Grundlagen der Codezugriffssicherheit. Der Benutzer muss außerdem auf die Datei zugreifen können, sofern sie vorhanden ist. Weitere Informationen finden Sie unter Zugriffssteuerungslisten (ACLs) .

Sie sollten anhand der Dateinamenerweiterung keine Schlüsse auf den Inhalt der Datei ziehen. Bei der Datei Form1.vb handelt es sich zum Beispiel nicht unbedingt um eine Visual Basic-Quelldatei.

Siehe auch

Aufgaben

Gewusst wie: Auslösen einer Ausnahme in Visual Basic

Gewusst wie: Testen von Code mit einem Try...Catch-Block in Visual Basic

Gewusst wie: Bereinigen von Ressourcen mit einem Try…Finally-Block in Visual Basic

Gewusst wie: Filtern von Fehlern in einem Catch-Block in Visual Basic

Gewusst wie: Überprüfen der inneren Ausnahme einer Ausnahme

Problembehandlung bei der Ausnahmebehandlung

Konzepte

Verwenden der strukturierten und der unstrukturierten Ausnahmebehandlung