Error-Objekt - Aufrufstapel

Fehlercodes im Aufrufstapel

Es ist nicht unbedingt notwendig, in jeder Routine ein Fehler-Handling zu implementieren, um eine Fehlermeldung zu erhalten. VB/A sucht bei einem Fehler den Aufrufstapel solange durch, bis es eine Fehlerbehandlung findet:

Sub MainSub()
 
1   On Error Resume Next
2   FirstSub
5   If Err.Number <> 0 Then MsgBox "Fehler!"
6   On Error GoTo 0
 
End Sub
 
Sub FirstSub()
 
3   SecondSub
    i = 8 / 4
 
End Sub
 
Sub SecondSub()
 
'dieser Fehler führt zum Rücksprung in MainSub
4   i = 8 / 0 
 
End Sub
 

In diesem Beispiel kann man anhand der Zeilennummer verfolgen, wie das Programm abläuft.

Da in MainSub die Fehlerbehandlung unterdrückt wird, erfolgt nach Zeile 4 ein Rücksprung in MainSub und Anzeige der Fehlermeldung. Die Zeile i = 8 / 4 in der Routine FirstSub wird in diesem Zusammenhang gar nicht durchgeführt!

Bei allen Möglichkeiten zur Fehlerbehandlung ist es immer besser, Fehler zu vermeiden anstelle Fehler abzufangen und anzuzeigen.

Die Möglichkeiten Fehler zu vermeiden sind sehr vielfältig und würden den Rahmen dieses Workshops sprengen.

Grundsätzlich sollte man aus „seinen“ Fehlern lernen und entsprechende Sicherheitsmechanismen einbauen, um einen einmal aufgetretenen Fehler möglichst nicht ein weiteres Mal auftreten zu lassen.