无法捕获SystemExit异常Python

Eug*_*e S 13 python exception-handling exception

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

try:
    raise SystemExit
except Exception as exception:
    print "success"
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.

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

try:
    raise SystemExit
except:
    print "success"
Run Code Online (Sandbox Code Playgroud)

据我所知,except Exception as exception应该抓住任何例外.这也是这里描述的方式.为什么这不适合我?

Bre*_*arn 26

如文档所述,SystemExit不会从Exception继承.你必须使用except BaseException.

但是,这是有原因的:

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

想要以与处理SystemExit相同的方式处理"真实"异常是不寻常的.你可能最好明确地捕获SystemExit except SystemExit.