Ein sehr einfaches Beispiel, ähnlich dem, das Sie hier finden:
http://docs.python.org/tutorial/errors.html#defining-clean-up-actions
Wenn Sie versuchen, ALLE Ausnahmen abzufangen, dann fügen Sie Ihren gesamten Code in die "try:"-Anweisung ein, anstelle von 'print "Performing an action which may throw an exception."'.
try:
print "Performing an action which may throw an exception."
except Exception, error:
print "An exception was thrown!"
print str(error)
else:
print "Everything looks great!"
finally:
print "Finally is called directly after executing the try statement whether an exception is thrown or not."
Im obigen Beispiel würden Sie die Ausgabe in dieser Reihenfolge sehen:
1) Ausführen einer Aktion, die eine Ausnahme auslösen kann.
2) Finally wird direkt nach der Ausführung der try-Anweisung aufgerufen, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.
3) "Eine Ausnahme wurde ausgelöst!" oder "Alles sieht gut aus!", je nachdem, ob eine Ausnahme ausgelöst wurde.
Ich hoffe, das hilft!
6 Stimmen
In den meisten Fällen machen Sie wahrscheinlich etwas falsch, wenn Sie versuchen, eine Ausnahme abzufangen. Ich meine, Sie können einfach etwas in Ihrem Code falsch schreiben und Sie werden es nicht einmal merken. Es ist eine gute Praxis, bestimmte Ausnahmen abzufangen.
38 Stimmen
Um genauer zu sein, ist das Abfangen aller möglichen Ausnahmen nur dann ein Problem, wenn sie unbemerkt abgefangen werden. Es ist schwer vorstellbar, wo dieser Ansatz sonst noch angebracht ist, außer wenn die abgefangenen Fehlermeldungen nach
sys.stderr
und möglicherweise protokolliert. Das ist eine absolut gültige und übliche Ausnahme.1 Stimmen
Haben Sie es versucht:
try: whatever() except Exception as e: exp_capture()
?0 Stimmen
Verwandt: Warum ist
except: pass
eine schlechte Programmierpraxis?0 Stimmen
Siehe auch Schlechte Idee, alle Ausnahmen in Python abzufangen
0 Stimmen
Verwandt: stackoverflow.com/questions/4564559/
1 Stimmen
Fyi, schließlich Blöcke werden immer entschuldigt, egal was afaik.