无法捕获 SystemExit 异常 Python
Posted
技术标签:
【中文标题】无法捕获 SystemExit 异常 Python【英文标题】:Can't catch SystemExit exception Python 【发布时间】:2014-12-24 17:24:00 【问题描述】:我正在尝试以下列方式捕获 SystemExit
异常:
try:
raise SystemExit
except Exception as exception:
print "success"
但是,它不起作用。
但是当我像这样更改我的代码时它确实有效:
try:
raise SystemExit
except:
print "success"
据我所知,except Exception as exception
应该会捕获任何异常。这也是here 的描述方式。为什么这里不适合我?
【问题讨论】:
【参考方案1】:作为documented,SystemExit 不继承自异常。你必须使用except BaseException
。
但是,这是有原因的:
异常继承自 BaseException 而不是 StandardError 或 Exception,因此它不会被捕获 Exception 的代码意外捕获。
想要像处理 SystemExit 一样处理“真正的”异常是不寻常的。您最好使用except SystemExit
明确地捕获 SystemExit。
【讨论】:
完美。谢谢!文档异常层次结构中很好地说明了这一点:docs.python.org/2/library/exceptions.html#exception-hierarchy以上是关于无法捕获 SystemExit 异常 Python的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法防止从sys.exit()引发的SystemExit异常被捕获?