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

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 301283 - Produkte anzeigen, auf die sich dieser Artikel bezieht
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
Alles erweitern | Alles schließen

Auf dieser Seite

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.

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

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 exception
    Finally   ' 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 reasons
    
    Catch 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.

VERWEISE

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



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.

Eigenschaften

Artikel-ID: 301283 - Geändert am: Dienstag, 15. Januar 2002 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbhowto kbhowtomaster KB301283
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com