2.15 Fehlerbehandlung in Visual Basic

Sie können auffangbare Fehler mit der On Error-Anweisung und der Err-Funktion testen und darauf reagieren. Tritt ein Fehler auf, so wird die Art des Fehlers in einer Fehlernummer gespeichert, die mit der Funktion Err abgefragt werden kann. (Eine Tabelle, was die einzelnen Nummern bedeuten, finden Sie auf den folgenden Seiten!)

Syntax:

On Error Goto Sprungmarke

Wenn Sie die On Error-Anweisung nicht verwenden, wird jeder auftretende Laufzeitfehler als fataler Fehler behandelt. Das heißt, Visual Basic erzeugt eine Fehlermeldung und unterbricht die Programmausführung.

Bei der Verwendung von On Error Resume Next wird die Programmausführung mit der Anweisung fortgesetzt, die sich unmittelbar an die Anweisung anschließt, die den Laufzeitfehler verursacht hat. Auf diese Weise kann Ihr Programm trotz eines Laufzeitfehlers fortgeführt und die Ursache für den Fehler nachträglich ermittelt werden. Ferner können Sie dadurch die Fehlerbehandlung direkt an der Fehlerstelle in der Prozedur durchführen, anstatt die Programmsteuerung an eine andere Stelle der Prozedur weiterzugeben.

On Error GoTo 0 deaktiviert die Fehlerbehandlung in der aktuellen Prozedur. Dabei wird die Programmzeile 0 nicht als Ausgangspunkt des Fehlerbehandlungscodes angegeben, auch wenn die Prozedur eine Programmzeile mit der Nummer 0 enthält. Ohne die Anweisung On Error GoTo 0 wird eine Fehlerbehandlungsroutine automatisch beim Verlassen einer Prozedur deaktiviert.

Um zu verhindern, daß ein Fehlerbehandlungscode ausgeführt wird, wenn kein Fehler aufgetreten ist, setzen Sie eine Exit Sub- oder Exit Function-Anweisung unmittelbar vor die Fehlerbehandlungsroutine, wie es das folgende Beispiel zeigt:

Sub Test()    On Error GoTo Fehlerroutine ...    Exit Sub  Fehlerroutine: ...    Resume Next End Sub

Beispiel 4:
On Error-Fehlerbehandlung (B04)

Dieses Beispiel baut die Fehlerbehandlung mit der On Error-Anweisung in eine Prozedur ein. (Aus Platzgründen im Web).

Private Sub Form_Click () ‘ Programm B04 Dim Drive, Msg ‘Variablen deklarieren.   On Error GoTo ErrorHandler     ‘ Fehlerbehandlungroutine einrichten.   Msg = “In dieser Demo soll eine nichtexistierende Datei auf“   Msg = Msg & “einem eventuell nicht existierenden Laufwerk“      Msg = Msg & “geöffnet werden. “   Msg = Msg & “Im Fehlerfall zeigt die Fehlerbehandlungsroutine eine “   Msg = Msg & “entsprechende Meldung an.“   MsgBox Msg ‘Erste Meldung anzeigen. ‘ Laufwerksbuchstaben zufällig bestimmen.   Drive = Chr(Int((26) * Rnd + 1) + 64)   Open Drive & “:\TEST\X.DAT“ For Input As #1 ‘ Datei öffnen.   Close #1 ‘ Datei schließen. Exit Sub ‘ Prozedur beenden, bevor Fehlerbehandlung ‘ beginnt. ErrorHandler: ‘ Zeilenmarke für Fehlerbehandlungsroutine. Select Case Err  Case 53:    Msg = “ERROR 53: Datei existiert nicht.“  Case 68:    Msg = “ERROR 68: Laufwerk “ & Drive & “: nicht verfügbar.“  Case 76:    Msg = “ERROR 76: Pfad existiert nicht.“  Case Else:    Msg = “ERROR “ & Err &  “ ist aufgetreten.“ End Select MsgBox Msg ‘ Fehlermeldung anzeigen. Resume Next ‘ Prozedur fortsetzen. End Sub