Fehlerroutine in selber Funktion prüfen

10/12/2007 - 22:33 von Müller Jürgen | Report spam
Ich rufe von einer Funktion eine andere auf.
Beide Funktionen haben eine eingebaute Fehlerroutine.
Wenn ich in der zweiten Funktion einen Fehler bekomme wird immer die
Fehlerroutine von der oberen (ersten) aufgerufen.

Warun ist dies so und wie kann man die àndern, so dass die Fehlerroutine von
der Funktion aufgerufen wird, wo auch der Fehler auftritt.
Hoffe da kann mir jemand weiterhelfen.
Vielen Dank für jede Antwort


Mein Beispiel sieht wie folgt aus:
-
Function Funktion1

On Error GoTo err
Call Funktion2

Exit Function
err:
MsgBox err.Description & " " & err.Number

End Function


Function Funktion2
On Error GoTo err_funk2

Exit Function

err_funk2:
MsgBox err.Number & "-" & err.Description

End Function
 

Lesen sie die antworten

#1 Thorsten Doerfler
11/12/2007 - 01:21 | Warnen spam
Müller Jürgen schrieb:
Ich rufe von einer Funktion eine andere auf.
Beide Funktionen haben eine eingebaute Fehlerroutine.
Wenn ich in der zweiten Funktion einen Fehler bekomme wird immer die
Fehlerroutine von der oberen (ersten) aufgerufen.



Wenn beide Funktionen eine Fehlerbehandlung haben, dann wird auch
diese angesprungen und nicht die der übergeordneten Funktion. Das
passiert erst dann, wenn Du die Fehlerbehandlung nicht abschließt und
erneut einen Fehler auslöst oder einen Fehler in der Fehlerbehandlung
auslöst.

Mein Beispiel sieht wie folgt aus:
-
Function Funktion1

On Error GoTo err
Call Funktion2

Exit Function
err:
MsgBox err.Description & " " & err.Number

End Function


Function Funktion2
On Error GoTo err_funk2

Exit Function

err_funk2:
MsgBox err.Number & "-" & err.Description

End Function



Dein Beispiel funktioniert, wie Du es Dir wünschst. Es muss also an
etwas anderem liegen.

Ein Hinweis vielleicht noch: Du solltest die Fehlerbehandlung immer
mit Resume (Next|Marke) abschließen, denn ansonsten bekommst Du das
Problem dass eben Folgefehler nicht mehr von der lokalen
Fehlerbehandlung bearbeitet werden, sondern von der übergeordneten:

Function Funktion1()
On Error GoTo err
Call Funktion2

errLeave:
Exit Function

err:
MsgBox err.Description & " " & err.Number

Resume errLeave
End Function

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen