Freigeben über


Gewusst wie: Implementieren von E/A-Try...Catch-Blöcken in Visual Basic

Aktualisiert: November 2007

Im folgenden Codebeispiel wird ein Try...Catch-Block implementiert, der Exception, IOException und alle Ausnahmen behandelt, die von IOException abgeleitet werden.

Beispiel

Dieses Beispiel beginnt mit der spezifischsten Ausnahme und endet bei der allgemeinsten. Jede Ausnahme wird getestet.

Dieses Codebeispiel ist auch als IntelliSense-Codeausschnitt verfügbar. In der Codeausschnittauswahl finden Sie es unter Dateisystem - Verarbeiten von Laufwerken, Ordnern und Dateien. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von Ausschnitten in den Code (Visual Basic).

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

Kompilieren des Codes

Fügen Sie den auszuführenden Code zum Try-Block hinzu.

Robuste Programmierung

Verwenden Sie diesen Codeblock als Ausgangspunkt, wenn Sie einen Datenvorgang in eine Try...Catch-Anweisung wrappen möchten. Dieser Try...Catch-Block dient dazu, alle Ausnahmen abzufangen und erneut auszulösen. Für Ihr Projekt kommt dies vielleicht nicht infrage. Erläuterungen zu Ausnahmebehandlungsoptionen finden Sie unter Empfohlene Vorgehensweise für die Verwendung von IntelliSense-Codeausschnitten.

Sie können die Wahrscheinlichkeit von Ausnahmen reduzieren. Verwenden Sie dazu Windows Forms-Steuerelemente, z. B. die Steuerelemente für die OpenFileDialog-Komponente (Windows Forms) und die SaveFileDialog-Komponente (Windows Forms). Diese schränken für die Benutzer die Auswahl auf gültige Dateinamen ein. Die FileInfo.Exists-Eigenschaft kann vor dem Versuch, eine Datei zu öffnen, überprüfen, ob diese Datei vorhanden ist. Die Verwendung dieser Steuerelemente und Klassen bietet jedoch keine absolute Sicherheit. Das Dateisystem kann sich zwischen dem Zeitpunkt der Dateiauswahl und dem Zeitpunkt der Codeausführung ändern. Die Ausnahmebehandlung ist deshalb nahezu immer erforderlich, wenn Dateien bearbeitet werden.

Sicherheit

Die Assembly erfordert für viele Dateiaufgaben eine von der FileIOPermission -Klasse gewährte Berechtigungsebene. Bei Ausführung in einem teilweise vertrauenswürdigen Kontext kann der Code aufgrund fehlender Berechtigungen eine Ausnahme auslösen. Weitere Informationen finden Sie unter Grundlagen der Codezugriffssicherheit. Der Benutzer muss ebenfalls auf die Datei zugreifen können, falls diese vorhanden ist. Weitere Informationen finden Sie unter Zugriffssteuerungslisten (Access Control Lists, ACLs).

Sie sollten aufgrund 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: Filtern von Fehlern in einem Catch-Block in Visual Basic

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

Konzepte

Empfohlene Vorgehensweise für die Verwendung von IntelliSense-Codeausschnitten

Übersicht über die strukturierte Ausnahmebehandlung für Visual Basic

Verwenden der strukturierten und der unstrukturierten Ausnahmebehandlung

Referenz

Try...Catch...Finally-Anweisung (Visual Basic)

Weitere Ressourcen

Ausnahmebehandlungsaufgaben