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