SO WIRD'S GEMACHT: Abfangen von Ausnahmen in Visual Basic .NET

Dieser Artikel wurde zuvor veröffentlicht unter D301283
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
301283 HOW TO: Catch Exceptions in Visual Basic .NET
Zusammenfassung
Das Abfangen und Behandeln von Ausnahmen ist eine Standardaufgabe der Programmierung. In diesem Artikel wird beschrieben, wie Sie mit Hilfe eines try-catch-finally-Blockes eine Ausnahme abfangen können. Ein try-catch-finally-Block ist ein "Wrapper", der sämtlichen Code einschließt, der möglicherweise zu einer Ausnahme führt.

Ein try-catch-finally-Block besteht aus folgenden Abschnitten:
  • Sämtlicher Code, der möglicherweise eine Ausnahme auslöst, wird innerhalb des try-Blockes platziert.
  • Beim Auslösen einer Ausnahme wird zum catch-Block übergegangen, sodass das Programm die entsprechende Operation ausführen kann, um das Problem zu beheben oder den Benutzer zu warnen.
  • Der Code im finally-Block wird stets ausgeführt und kann nach dem Auftreten einer Ausnahme Aufräumarbeiten vornehmen. Der finally-Block ist optional.
Zurück zum Anfang

Anforderungen

In der folgenden Liste werden die empfohlene Hardware, Software und Netzwerkinfrastruktur und die erforderlichen Service Packs aufgeführt:

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Windows NT 4.0 Server
  • Microsoft Visual Basic .NET
Zurück zum Anfang

Abfangen von Ausnahmen in Visual Basic .NET

  1. Erstellen Sie eine neue Konsolenanwendung in Visual Basic .NET.
  2. Fügen Sie in die Sub Main()-Prozedur das folgende Codebeispiel ein. Im Beispiel werden drei Variablen deklariert und initialisiert, wobei die Initialisierung von "k" einen Fehler hervorruft:
    ' This code generates an exception.	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")	Console.WriteLine()	Dim i as Integer = 10	Dim j as Integer = 0	Dim k As Integer k = i/j ' Error on this line.
  3. Drücken Sie F5, um die Ausnahme anzuzeigen.
  4. Schließen Sie den Code in einer try-catch-Anweisung ein, um den Fehler abzufangen. Der folgende Code fängt sämtliche Fehler ab, die im Code ausgelöst werden, und zeigt eine allgemeine Fehlermeldung an. Ersetzen Sie den Code in der Sub Main()-Prozedur durch folgenden Code:
    ' This code shows how to catch an exception.Try	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")	Console.WriteLine()	Dim i as Integer = 10	Dim j as Integer = 0	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.Catch	Console.WriteLine("An error occurred.")End Try
  5. Drücken Sie STRG+F5, um das Projekt auszuführen. Beachten Sie, dass die Fehlermeldung aus dem catch-Block angezeigt wird.
  6. Wenn unabhängig von Fehlern Aufräumarbeiten oder abschließende Verarbeitungsschritte durchgeführt werden müssen, verwenden Sie den finally-Teil der try-catch-finally-Anweisung. Code im finally-Teil der Anweisung wird unabhängig von Ausnahmen stets ausgeführt. Der folgende Code "This statement is always printed" wird auch dann auf der Konsole angezeigt, wenn kein Fehler aufgetreten ist. Ersetzen Sie den Sub Main()-Code durch folgenden Code:
    ' This code shows how to catch an exception.	Try	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")	Console.WriteLine()	Dim i as Integer = 10	Dim j as Integer = 0	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.Catch	Console.WriteLine("An error occurred.")Finally ' This section is performed regardless of the above processing.	Console.WriteLine()	Console.WriteLine("This statement is always printed")End Try
  7. Drücken Sie STRG+F5, um das Projekt auszuführen.
  8. Mit dem Ausnahmeobjekt und der catch-Anweisung können Sie Detailinformationen über die Ausnahme abrufen. Ausnahmen besitzen eine Reihe von Eigenschaften, die die Suche nach Hilfe-, Quell- und sogar Stapelinformationen über eine Ausnahme erleichtern. Diese Informationen können für das Ermitteln der ursprünglichen Ursache der Ausnahme oder das Bereitstellen besserer Erläuterungen des Ausgangspunkts sehr nützlich sein. Im folgenden Beispiel wird eine Ausnahme abgefangen und eine entsprechende Fehlermeldung angegeben. Sie können wie gehabt den Code in der Sub Main()-Prozedur durch folgenden Code ersetzen:Beispiel 1
    ' This code shows how to catch an exception.Try	   Console.WriteLine("We're going to divide 10 by 0 and see what happens...")	   Console.WriteLine()	   Dim i as Integer = 10	   Dim j as Integer = 0	   Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.Catch e As Exception   ' Perform code that deals with the exception                       ' or informs the user what occurred.	   Console.WriteLine("The following error occurred:")	   Console.WriteLine(e.ToString()) ' Print the error message to the user.Finally    ' This section is performed regardless of the above processing.	   Console.WriteLine()	   Console.WriteLine("This statement is always printed")End Try
    Beispiel 2:
    ' This code shows how to catch an exception.Try	   Console.WriteLine("We're going to divide 10 by 0 and see what happens...")	   Console.WriteLine()	   Dim i as Integer = 10	   Dim j as Integer = 0	   Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.Catch e As Exception  ' Perform code that deals with the exception                      ' or informs the user what occurred.        Console.WriteLine("The following error occurred:")        Console.WriteLine( e.Message )     ' Print the error message.        Console.WriteLine( e.Source )      ' Name of application or object                                           ' that caused the error        Console.WriteLine( e.StackTrace )  ' String that contains the stack                                            ' trace for this exceptionFinally   ' This section is performed regardless of the above processing.        Console.WriteLine()        Console.WriteLine("This statement is always printed")End Try
  9. Bisher wurde der besondere Fall einer nicht spezifischen Ausnahme behandelt. Sollten Sie jedoch vorab wissen, welche Art von Ausnahme auftreten wird, können Sie die erwartete Ausnahme abfangen und entsprechend verarbeiten. Dann können Sie alle anderen Ausnahmen abfangen und ebenfalls behandeln. Dies wird im folgenden Beispiel veranschaulicht:
    ' We are going to attempt to do some file processing.' This can cause a number of potential exceptions.' Note that you can use the specific exceptions to get extra information about that exception,' but this example focuses on showing control execution for those exceptions.Try	File.Create("c:/temp/test.txt")  ' Can fail for a number of reasonsCatch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.	Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")Catch se As System.Security.SecurityException ' You do not have the appropriate permission                                              ' to take this action.	Console.WriteLine("You don't have the security permissions to take this action!")Catch e As Exception    ' Catch all other exceptions.	Console.WriteLine( e.ToString() )  ' Print the standard exception information.End Try
    Da Computer unterschiedlich konfiguriert sein können, muss das Beispiel in diesem Schritt nicht unbedingt eine Ausnahme auslösen. Wenn Sie eine E/A-Ausnahme erzwingen möchten, ändern Sie den Dateipfad so, dass er auf einen auf Ihrem Computer nicht vorhandenen Ordner verweist.
Zurück zum Anfang

VERWEISE

Weitere Informationen erhalten Sie im Microsoft .NET Framework SDK (Software Development Kit):

Zurück zum Anfang

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
error handling try...catch...finally
Свойства

ИД на статията: 301283 – Последен преглед: 01/15/2002 10:11:00 – Редакция: 1.0

Microsoft Visual Basic .NET 2002 Standard Edition

  • kbhowto kbhowtomaster KB301283
Обратна връзка