如果我的代码可以像这样同时引发更多异常
class A(Exception): pass
class B(Exception): pass
try:
try:
raise A('first')
finally:
raise B('second')
except X as c:
print(c)
是否可以同时处理所有异常?
答案 0 :(得分:1)
您可以通过以下方式处理所有问题:
except (A, B) as c:
您还可以为自己的异常定义自己的基类:
class BaseCustomException(Exception): pass
class A(BaseCustomException): pass
class B(BaseCustomException): pass
在您可以捕获基本异常之后,它将涵盖所有派生的异常:
except BaseCustomException as c:
答案 1 :(得分:0)
当新的异常被抛出在catch块中或将要传播到该块之外的finally块中时,当前的异常将被中止(并被遗忘),因为新的异常被向外传播。与其他任何异常一样,新的异常开始释放堆栈,从当前块(catch或finally块)中退出,并在此过程中受到任何适用的catch或finally块的约束。