![](/img/trans.png)
[英]In Python, how do I construct an exception from another exception without raising it?
[英]How can I terminate (without raising another exception) my python script while handling an exception
在我的python3脚本中,我正在使用subprocess
模块调用外部程序。 当被调用程序以非零状态代码退出时,将引发CalledProcessError
。 在那种情况下,我会打印一条错误消息,并希望在异常处理程序中终止脚本。
我的问题是, exit()
通过本身抛出SystemExit
异常来工作,所以我最终得到了:
During handling of the above exception, another exception occurred:
该脚本类似于以下内容:
try:
output = subprocess.check_output(["program"])
return output
except subprocess.CalledProcessError as error:
print("program returned non-zero exit status", file=sys.stderr)
exit(error.returncode)
如何在不引发异常的情况下终止脚本?
os._exit
允许您退出而不会引发异常,但是我不建议您使用这种方法,因为它会不合os._exit
地退出。 不会进行清理。
您还可以稍微调整subprocess
的逻辑,以使sys.exit
在except
块之外被调用:
try:
output = subprocess.check_output(["programm"])
return output
except subprocess.CalledProcessError as error:
print("programm returned non-zero exit status", file=sys.stderr)
returncode = error.returncode
exit(returncode) # You'll only reach this if an exception occurred.
这样一来,您就不会得到追溯(尽管我实际上无法复制得到的消息,即使我将exit
保留在except
块内)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.