functions terminated with exceptions

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Weisst jemand wie kann ich Funktionen die mit eine Exception von den ganz normalen die mit return beenden unterscheiden?

Danke im voraus.
BlackJack

Irgendwie kann ich den Satz nicht richtig parsen. Und wo kommt der Titel her? Ist das eine Fehlermeldung, die Du irgendwo bekommst?

Ansonsten kann man eine Funktion die nicht mit ``return`` beendet wurde, sondern eine Ausnahme ausgelöst hat, eben an dieser Ausnahme erkennen.
Gast

Hi BlackJack,

Also, ich arbeite mit den inspect module und ich will erkennen wenn eine Funktion mit eine Exception beendet.Also falls man event=='call' oder 'return' hat, dann ist ok,aber wenn man event='exception' hat wie kann ich unterscheiden dass ich eine behandelte Exception habe oder nicht?

Danke.
BlackJack

Das kannst Du gar nicht erkennen. Was ist denn zum Beispiel bei folgendem Quelltext:

Code: Alles auswählen

def spam(n):
    if n < 0:
        raise ValueError('n must be positive')
    else:
        return n * 2
Ist das eine Funktion die "normal" endet oder eine die in einer Ausnahme endet?

Ausserdem können in einer Funktion auch weitere Funktionen aufgerufen werden die auch eine Ausnahme auslösen können. Und ein `MemoryError` kann so gut wie immer auftreten.
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Hi BlackJack,

Ok,du lässt dein Skript laufen und dein Fuktion wenn n<0 ist
def spam(n):
if n < 0:
raise ValueError('n must be positive')
else:
return n * 2
kann mit den Exception ValueError beenden,und dass genau will ich erkennen,wenn kein return erreichbar ist.Was ich zu machen will ist den Trace von eine Funktion f1 Z.B
call f1
| call f2
| | call f3
Exception in f3 aufgetreten,die nicht behandelt ist
| | done f3
| done f2
done f1

indent= "| " wenn event=="call" indent=indent+1
event="return" indent=indent-1
event = "exception" wenn es behandelt ist, kein problem weil den return noch erreichbar ist, aber wenn nicht dann muss ich indent=indent-1 machen.Also wie kann ich sehen dass den Exception den Funktion f3 beendet????

Danke.
BlackJack

Ach Du möchtest das zur Laufzeit herausfinden, wenn tatsächlich eine Ausnahme ausgelöst wurde!?

Dann schau mal ob in den Modulen traceback oder inspect Funktionen zu finden sind, mit denen Du das gewünschte basteln kannst.

Ansonsten habe ich glaube ich immer noch nicht verstanden, was Du genau machen möchtest.
Antworten