Fehler, die beim Ausführen eines Programmes, also zur Laufzeit, auftreten, heißen Laufzeitfehler. Oft liegen die Ursachen für einen derartigen Fehler außerhalb des Programmes, beispielsweise wenn eine Datei auf der Festplatte nicht gefunden wird oder eine Diskette nicht gelesen werden kann.
On Error { Resume Next | GoTo { Programmzeile | Sprungmarke | 0 } }
Mit dieser Anweisung wird die Fehlerbehandlung festgelegt. Durch die Anweisung on Error GoTo kann eine Fehlerbehandlungsroutine aktiviert bzw. deaktiviert und die Position dieser Routine innerhalb der Funktion bzw. Prozedur angegeben werden.
Wenn ein Fehlerbehandler aktiviert wurde, bewirkt jeder Laufzeitfehler einen Sprung zur Fehhlerbehandlungsroutine. Der Fehlerbehandler wird in dem Moment aktiv, in dem ein Laufzeitfehler aufgefangen wurde, und bleibt es, bis in ihm eine der Anweisungen Resume, Exit Sub oder Exit Function ausgeführt wird.
Durch die Anweisung On Error GoTo 0 wird die Fehlerbehandlung deaktiviert.
Tritt ein Fehler in einer Prozedur ohne Fehlerbehandlung auf, wird die aufrufende Prozedur durchsucht, wenn es auch dort keine Fehlerbehandlung gibt, wird in deren aufrufender weitergesucht usw., bis entweder eine Routine gefunden oder die oberste Ebene erreicht wird. Durch ein Resume wird dann die fehlerverursachende Prozedur wieder aufgerufen, durch ein Resume Next wird das Programm bei der Anweisung nach dem fehlerverursachenden Prozeduraufruf fortgesetzt.
Err-Objekt: liefert Fehlercode
Resume: wiederholt die fehlerverursachende Anweisung
Resume Next: setz die Programmausführung bei der Anweisung nach der fehlerverursachenden fort
Es gibt grundsätzlich 3 Möglichkeiten der Fehlerbehandlung:
- Keine Behandlung
Bewirkt im Fall eines Laufzeitfehlers einen Programmabbruch.
- Verzögerte Behandlung
On Error Resume Next: Die Standardfehlerbehandlung wird bis zum Ende der jeweiligen Prozedur bzw. bis zu anderen On Error... - Anweisungen ausgeschaltet. Mit Hilfe des Err-Objekts kann festgestellt werden, ob und welche Fehler aufgetreten sind.
- Sofortige Behandlung
On Error GoTo Fehlerbehandler : Ein Fehlerbehandler wird aktiviert und bleibt bis zum Ende der jeweiligen Prozedur wirksam. Bei einem Fehler wird zum Code an der Sprungmarke Fehlerbehandler verzweigt. Diese Sprungmarke befindet sich sinnvollerweise am Ende der Prozedur, vor ihr wird die Prozedur dur Exit Sub bzw. Exit Function verlassen.
Beispiel:
Sub Beispielprozedur()
On Error GoTo Fehler
...
Exit Sub
Fehler:
...
Resume Next
End Sub
|