我试图以下列方式捕获SystemExit
异常:
try:
raise SystemExit
except Exception as exception:
print "success"
但是,它不起作用。
当我改变我的代码时,它确实有效:
try:
raise SystemExit
except:
print "success"
据我所知,except Exception as exception
应该捕获任何异常。这也是here的描述方式。为什么这不适合我?
答案 0 :(得分:26)
作为documented,SystemExit不会从Exception继承。您必须使用except BaseException
。
然而,这是有原因的:
异常继承自BaseException而不是StandardError或Exception,因此不会被捕获Exception的代码意外捕获。
想要处理"真实"是不寻常的。异常与处理SystemExit的方式相同。使用except SystemExit
显式捕获SystemExit可能会更好。