我的代码会像这样引发异常:
try:
causeEitherError1orError2
except Error1:
handle Error1
cause Error2
except Error2:
handle Error2
尝试操作 A 会导致 Error1 或 Error2。处理 Error1 有时会导致 Error2。当 Error2 可能由原始尝试或错误 1 引起时,我如何处理 Error1 和 Error2?
请您参考如下方法:
总的来说,这似乎是一个复杂的设计,但您确实可以使用一个 except 大括号捕获多个异常。您还可以根据自己的优势嵌套 try-except 处理程序。一种可能的设计是:
try:
... # action A
except (Error1, Error2) as e:
try:
... # handle e
except Error2 as f:
... # handle f
如果您想辨别第一次引发的是什么Exception,您始终可以检查类型:
print(type(e)) # prints Error1 or Error2 depending on what was raised
或者,更准确地说,通过 isinstance 检查缩小范围:
if isinstance(e, Error1):
... # handle e as Error1
else:
... # handle e as Error2
