无法捕获SystemExit异常Python

时间:2014-10-29 04:55:21

标签: python exception exception-handling

我试图以下列方式捕获SystemExit异常:

try:
    raise SystemExit
except Exception as exception:
    print "success"

但是,它不起作用。

当我改变我的代码时,它确实有效:

try:
    raise SystemExit
except:
    print "success"

据我所知,except Exception as exception应该捕获任何异常。这也是here的描述方式。为什么这不适合我?

1 个答案:

答案 0 :(得分:26)

作为documented,SystemExit不会从Exception继承。您必须使用except BaseException

然而,这是有原因的:

  

异常继承自BaseException而不是StandardError或Exception,因此不会被捕获Exception的代码意外捕获。

想要处理"真实"是不寻常的。异常与处理SystemExit的方式相同。使用except SystemExit显式捕获SystemExit可能会更好。