如何在 Python 中引发异常时停止程序?

当 Python 中引发异常时,我需要停止我的程序。 我如何实现这一点?

208760 次浏览

据我所知,如果脚本没有捕捉到异常,它将被中断。

import sys


try:
print("stuff")
except:
sys.exit(1) # exiting with a non zero value is better for returning from an error

可以停止捕获异常,或者-如果需要捕获异常(执行一些自定义处理) ,可以重新引发:

try:
doSomeEvilThing()
except Exception, e:
handleException(e)
raise

请注意,在不传递异常对象的情况下键入 raise将导致保留原始回溯。通常它比 raise e好得多。

当然,您也可以显式调用

import sys
sys.exit(exitCodeYouFindAppropriate)

这会引发 SystemExit 异常,并且(除非在某个地方捕捉到异常)使用指定的退出代码终止应用程序。

如果您不处理异常,它将向上传播调用堆栈到解释器,然后解释器将显示回溯和退出。IOW: 当发生异常时,您不必执行 什么都行来使脚本退出。

import sys


try:
import feedparser
except:
print "Error: Cannot import feedparser.\n"
sys.exit(1)

现在我们的状态代码是1。输出错误消息、写入日志和进行清理通常也很有帮助。

import sys


try:
# your code here
except Exception as err:
print("Error: " + str(err))
sys.exit(50) # whatever non zero exit code