Python: Ein Versuch mehrere außer

195

Ist es in Python möglich, mehrere exceptAnweisungen für eine tryAnweisung zu haben? Sowie :

try:
 #something1
 #something2
except ExceptionType1:
 #return xyz
except ExceptionType2:
 #return abc
Eva611
quelle
7
@ Eva611: Entschuldige dich nicht. (1) versuchen Sie es. (2) Schreiben Sie eine Antwort auf Ihre Frage.
S.Lott
6
Es funktioniert. Versuchte es mit dem Python-Interpreter ...
Eva611
38
@ Eva611 Ich denke deine Frage war in Ordnung. War für mich viel schneller zu Google, als ein Beispiel im Python-Interpreter einzurichten, also war ich froh, dass Sie gefragt haben. DrTysa und andere hätten nur mit einem kurzen "Ja" antworten sollen, anstatt Sie zu beschimpfen.
Galarant
5
Die meiste Zeit wird Ihre erste Vermutung falsch sein oder subtile Nuancen übersehen, also habe ich (wie 15.000 andere) zuerst Google ausprobiert!
Chris
9
Ich habe Google ausprobiert und diese Frage gefunden. Daher bin ich froh, dass jemand anderes es in einem so öffentlichen Forum wie SO gefragt hat, und ich bin froh, dass genug andere Leute damit verlinkt sind, dass der Google-Algorithmus es als mein erstes Ergebnis aufgetaucht ist.
Kingledion

Antworten:

328

Ja, es ist möglich.

try:
   ...
except FirstException:
   handle_first_one()

except SecondException:
   handle_second_one()

except (ThirdException, FourthException, FifthException) as e:
   handle_either_of_3rd_4th_or_5th()

except Exception:
   handle_all_other_exceptions()

Siehe: http://docs.python.org/tutorial/errors.html

Das Schlüsselwort "as" wird verwendet, um den Fehler einer Variablen zuzuweisen, damit der Fehler später im Code eingehender untersucht werden kann. Beachten Sie auch, dass die Klammern für den dreifachen Ausnahmefall in Python 3 benötigt werden. Diese Seite enthält weitere Informationen: Mehrere Ausnahmen in einer Zeile abfangen (außer Block)

vartec
quelle
76
Wenn Sie in beiden Fällen dasselbe tun möchten, ist es except (SomeError, OtherError):. Beantwortet die OP-Frage nicht, kann aber einigen Leuten helfen, die über Google hierher kommen.
Mark
Wenn Sie beispielsweise mehrere Versionen einer Datenstruktur in eine neue Struktur konvertieren müssen, können Sie beispielsweise beim Aktualisieren von Codeversionen die try..excepts verschachteln.
Rolf von Sachsen
5
Wenn Sie alle Ausnahmen behandeln möchten, sollten Sie except Exception:statt einfach verwenden except:. (Plain außer wird gerade fangen SystemExitund KeyboardInterruptwas normalerweise nicht das ist, was Sie wollen)
polvoazul
Sie möchten vielleicht auch etwas damit machen, eda Sie ihm einen Namen geben :)
HelloGoodbye