Hallo,
macht das zweite "Exit Sub" Sinn?
Sub SubName
On Error Goto myerrhandler
.....
Exit Sub
myerrhandler:
MessageBox "frmTest SubName(): " & Erl & ": " & Error$
Exit Sub '// <-- macht das Exit Sub Sinn?
End Sub
Hallo,
danke erstmal. So weit hatte ich das ganze nicht durchdacht, mir ging es erstmal darum, ob ein "Exit Sub" notwendig ist, wenn direkt danach ein "End Sub" kommt. Welcher Unterschied besteht denn zwischen
Exit Sub <-- Funktion läuft fehlerfrei durch und wird hier verlassen !?
myerrhandler:
...
End Sub
und
Exit Sub
myerrhandler:
MessageBox ...
Exit Sub <-- Fehler trat auf und Sub wird hier verlassen
End Sub
bzw.
Exit Sub
myerrhandler:
MessageBox...
End Sub <-- Fehler trat auf und sub wird hier verlassen
s.
Für meinen Geschmack ist das 2. Exit Sub völlig in Ordnung.
Ist wohl schon Geschmackssache, aber ich sehe das nicht so.
On Error goto ErrHandler
'code
Exit Sub
ErrHandler:
'print "irgendwas'
End Sub
Sobald im ErrorHandler, kommt dann bei 'End Sub' eine "No Resume"-Fehlermeldung.
Da jetzt einfach eine "Exit Sub" reinzuschalten, finde ich persönlich nicht als "schön". Denn erstmal ist so nicht ersichtlich, dass Exit Sub ein Err=0 macht. Siehe auch die Frage oben von littleS als Auslöser dieses Threads.
Meines Erachtens ist es durchgängiger, hier mit 2 Sprungmarken zu arbeiten:
On Error goto ErrHandler
'code
GoOut:
Exit Sub
ErrHandler:
'print "irgendwas'
Resume GoOut
End Sub
Wenn man das immer so macht, hat das noch einen Vorteil. Statt ExitScript verwendet man immer GoOut, also auch z.B. bei anderen Prüfungen/If-Abfragen etc. Im GoOut kann man dann noch was anderes machen, was allgemein immer gemacht werden soll, wenn man die Routine verlässt.
Man sollte das IMHO aber dann durchgängig machen, und ansonsten Sprungmarken immer vermeiden.
Außerdem ist es so schön durchgängig: Eine Fehlerbehandlung wird immer sauber durch ein Resume beendet.
Aber wie schon erwähnt: ist wohl "Geschmackssache". Am wichtigsten ist IMHO, das immer gleich zu machen, zumindest für ein Projekt.