Wie kann ich testen, ob eine Funktion ein Ausnahmeobjekt zurückgegeben hat, wenn ich nicht im Voraus weiß, welche Art von Ausnahme ausgelöst wurde?Wie für ein Ausnahmeobjekt mit einer 'if' Anweisung zu testen?
def func():
try:
bad_thing_happens # NameError("global name 'bad_thing_happens' is not defined",)
return True
except Exception as e:
return e
result = func()
if result == Exception:
print 'a bad thing happened'
In diesem Fall wird die if-Anweisung zurückgibt False
und ich würde die Ausnahme verpassen?
Lassen Sie die Ausnahme nur außerhalb der Funktion propagieren und fangen Sie sie dann woanders ab. Sie müssen es nicht fangen und es dann zurückgeben, eine Ausnahme ist für einen außergewöhnlichen Umstand nicht als eine regelmäßige Rückkehr. – pvg
Auch mindestens 9 mal von 10, fangen 'Exception' ist eine schlechte Idee. Wenn Sie den Typ der Ausnahme nicht kennen, wissen Sie sehr selten, wie Sie damit richtig umgehen müssen ... Manchmal ist es das Beste, wenn Sie Ihr Programm abstürzen lassen, sich die Stack-Trace ansehen, um herauszufinden, warum es gestorben und repariert wurde der Bug/die Logik, damit es beim nächsten Mal nicht stirbt. – mgilson
Vielen Dank für Ihre tolle Antworten, Ausnahmen wurden nur viel klarer :) – derrend