Fehlerbehandlung

Mit den Befehlen ON ERROR RESUME NEXT, ON ERROR GOTO, ON ERROR GOSUB und ON ERROR STOP kann eine Fehlerbehandlung im Code ausgeführt werden.

 

Mit folgendem Code wird eine einfache Fehlerbehandlung ausgelöst. Die Fehlerbehandlung findet im Code nach dem Label Sprungmarke statt. Über den Befehl On Error Gosub Sprungmarke wird die Fehlerbehandlungsroutine gekennzeichnet. Wird ein Fehler ausgelöst (hier durch die Teilung durch 0), wird der Code nach dem Label Sprungmarke ausgeführt und nach der Behandlung hinter der den Fehler auslösenden Codezeile fortgeführt.

 

Function TuWas(ByVal Parameter1 As Long) As Long

   On Error Gosub Sprungmarke

  

   Parameter1 = Parameter1 / 0

 

   Exit Function Parameter1

  

Label Sprungmarke

   MsgBox(Err.Description)

End Gosub

End Function

Alternativ kann eine Fehlerbehandlung auch mit dem Befehl ON ERROR GOTO durchgeführt werden:

 

Function TuWas(ByVal Parameter1 As Long) As Long

   On Error Goto Sprungmarke

  

   Parameter1 = Parameter1 / 0

 

   Exit Function Parameter1

  

Label Sprungmarke

   MsgBox(Err.Description)

End Function

Daneben steht auch der Befehl ON ERROR RESUME NEXT zur Verfügung, der Fehler verursachende Codezeilen überspringt. Für die Fehlerüberprüfung steht das Err-Objekt zur Verfügung, das den Fehlercode des letzten aufgetretenen Fehlers zur Verfügung stellt.

 

Function TuWas(ByVal Parameter1 As Long) As Long

   On Error Resume Next

  

   Parameter1 = Parameter1 / 0

End Function

 

Der Befehl ON ERROR STOP schaltet die Fehlerbehandlung wieder aus.

 

Function TuWas(ByVal Parameter1 As Long) As Long

   On Error Resume Next

  

   Parameter1 = Parameter1 / 0

 

   On Error Stop

End Function

Zu beachten ist, dass sich die Fehlerbehandlung auch auf Funktionsaufrufe auswirkt. Tritt z.B. nach einer eingeschalteten Fehlerbehandlung mit ON ERROR RESUME NEXT ein Fehler in einer aufgerufenen Funktion auf, wird mit dem Befehl unmittelbar nach dem Funktionsaufruf in der fehlerbehandelnden Funktion fortgesetzt.

Diese Fehlerbehandlungsketten werden bei Aufrufen von Events neu begonnen. Daher ist gegebenenfalls ein Befehl zur Behandlung von Fehlern zu Beginn eines Events erforderlich.