Fehlerbehandlung

15/11/2008 - 14:53 von Dietmar Thesing | Report spam
Hallo liebe Access-FreundInnen,

leider habe ich mal wieder einen Knoten im Gehirn.
Aber ich hatte ja sowieso vor langer Zeit als Antwort auf Thomas
Müllers hilfreiche Erklàrung
http://groups.google.de/group/micro...a1ff?hl=de
versprochen, mich zurückzumelden.

Ich versuche also, die Fehler in untergeordneten Prozeduren nach oben
weiterzureichen.
In der untergeordneten Prozedur fcBilderanzeigen passiert ein Fehler
(2220), am Anfang der Funktion steht On Error Goto f und es wird
korrekt zu f: gesprungen.

f:
Err.Raise Err.Number, "modPic. " & "fcBilderAnzeigen. " & _
Err.Source, Err.Description & ", Zeile: " & Erl()
Resume e

Jetzt làuft die Fehlerbehandlung in der aufrufenden Prozedur zwar an,
aber sie hat nur noch Fehler 0, Zeile 0.
Warum wird bei dieser Art der Übergabe der Fehler genullt?

Ehe ich euch jetzt bemühe, habe ich (neben erfolglosem Gurgeln)
natürlich noch so allerhand probiert:

f:
Debug.Print "Fehlerbehandlung fcBilderanzeigen- Nummer: " & _
Err.Number & vbCrLf & Err.Description & _
vbCrLf & " Zeile:" & Erl()

gibt mir Fehlernummer und -Beschreibung korrekt aus.
Danach:

Err.Raise err.Number "modPic. " & "fcBilderAnzeigen. " & _
Err.Source, Err.Description & ", Zeile: " & Erl()

zeigt wieder nur noch Fehler 0, Zeile 0 an, natürlich ohne Quelle und
Beschreibung.

Funktionieren tut es, wenn ich das Zeugs vorher in Variablen packe.
f:
gIntErrNr = Err.Number
gStrErrQu = Err.Source
gStrErrDescr = Err.Description
gVarErl = Erl()
Err.Raise gIntErrNr, gStrErrQu & "modPic. " & _
"fcBilderAnzeigen. ", gStrErrDescr & ", Zeile: " & varErl
Resume e

Da erhebt sich für mich aber noch eine weitere Frage:
Was ist mit Fehlern aus der Errors-Auflistung? Werden die auch beim
Weiterreichen nach oben genullt?
Eine Möglichkeit wàre, vor dem Err.Raise die "normale"
Fehlerbehandlung anzuwerfen, aber davor schrecke ich noch zurück, weil
dann der User bei *einem* Fehler in untergeordneten Prozeduren
mindestens *zwei* MsgBox-Meldungen erhàlt. Die "normale"
Fehlerbehandlung làuft ja dann in der obersten Prozedur sowieso noch
ab. (Im Wesentlichen die von Henry)

Vielen Dank für Euer Mitdenken,
Gruß
Dietmar
 

Lesen sie die antworten

#1 Thomas Möller
15/11/2008 - 16:51 | Warnen spam
Hallo Dietmar,

Dietmar Thesing schrieb:
leider habe ich mal wieder einen Knoten im Gehirn.
Aber ich hatte ja sowieso vor langer Zeit als Antwort auf Thomas
Müllers hilfreiche Erklàrung
http://groups.google.de/group/micro...a1ff?hl=de
versprochen, mich zurückzumelden.



hast Du den Code, den ich damals gepostet habe, einmal ausprobiert?
Funktioniert der bei Dir wie gewünscht?


Ich versuche also, die Fehler in untergeordneten Prozeduren nach oben
weiterzureichen.
In der untergeordneten Prozedur fcBilderanzeigen passiert ein Fehler
(2220), am Anfang der Funktion steht On Error Goto f und es wird
korrekt zu f: gesprungen.

f:
Err.Raise Err.Number, "modPic. " & "fcBilderAnzeigen. " & _
Err.Source, Err.Description & ", Zeile: " & Erl()
Resume e

Jetzt làuft die Fehlerbehandlung in der aufrufenden Prozedur zwar an,
aber sie hat nur noch Fehler 0, Zeile 0.
Warum wird bei dieser Art der Übergabe der Fehler genullt?



Irgendwo oder irgendwie wird das Error-Objekt zurückgesetzt. Poste doch
mal bitte den vollstàndigen Code der beide beteiligten Prozeduren.
(Bitte per Copy & Paste einfügen). Den Nutzcode kannst Du kürzen, sofern
darin nichts am Error-Handling geàndert wird.


CU
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen