try:
raise KeyError()
except KeyError:
print "Caught KeyError"
raise Exception()
except Exception:
print "Caught Exception"
Wie erwartet Exception()
auf der 5. Zeile Anheben nicht in der endgültigen except Exception
Klausel gefangen. Um fangen die die Ausnahme innerhalb des except KeyError
Block, muss ich noch mal try...except
wie folgt hinzufügen und die endgültige except Exception
Logik duplizieren:Python/Außer mit mehreren Ausnahme Blöcke
try:
raise KeyError()
except KeyError:
print "Caught KeyError"
try:
raise Exception()
except Exception:
print "Caught Exception"
except Exception:
print "Caught Exception"
In Python ist es möglich, den Fluss der Ausführung der endgültigen except Exception
passieren Block wie ich versuche zu tun? Wenn nicht, gibt es Strategien, um die Duplizierung von Logik zu reduzieren?
Ja. Setzen Sie den Code, den Sie verwenden, um 'Exception' in einer Funktion zu behandeln. Dann rufe diese Funktion an beiden Orten auf. – kindall
'except'-Klauseln fangen nur Fehler ein, die im' try' geworfen werden; Andernfalls könnten Sie nicht erneut erhöhen, wenn Sie möchten. – jonrsharpe
hmmm, kannst du erklären, was du erreichen willst? Der Standardansatz, eine abgefangene Ausnahme wieder aufzuheben, die Sie nicht behandelt haben, ist 'raise', ohne etwas anderes. Das kann in diesem Fall Ihren Anforderungen entsprechen oder nicht. Kann nicht von Ihrem Code allein erzählen. –