引发异常时在Python中设置退出代码

sh-*_*eta 30 python exception exit-code

$ cat e.py
raise Exception
$ python e.py
Traceback (most recent call last):
  File "e.py", line 1, in <module>
    raise Exception
Exception
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

我想将此退出代码从1更改为3,同时仍然转储完整的堆栈跟踪.最好的方法是什么?

tom*_*asz 46

看看traceback模块.您可以执行以下操作:

import sys, traceback

try:
  raise Exception()
except:
  traceback.print_exc()
  sys.exit(3)
Run Code Online (Sandbox Code Playgroud)

这将写回溯到标准错误并退出代码3.

  • 但是没有办法安装这样的处理程序而不必打开`try` /`except`子句?我宁愿只调用一次,也许是通过导入一个特定的模块,然后每次引发`ExceptionWhichCausesExitCode3()`应该退出程序,退出代码为3. (4认同)