如何处理多个异常

时间:2019-04-12 11:10:00

标签: python exception

如果我的代码可以像这样同时引发更多异常

class A(Exception): pass
class B(Exception): pass

try:
    try:
        raise A('first')
    finally:
        raise B('second')
except X as c:
    print(c)

是否可以同时处理所有异常?

2 个答案:

答案 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块的约束。

检查:Exception thrown in catch and finally clause