如何退出Python而没有追溯?
我想知道如何从Python退出而不在输出上有回溯转储。
我仍然希望能够返回错误代码,但我不想显示追溯日志。
我希望能够退出使用exit(number)
无痕迹,但在例外(不是退出)的情况下,我想跟踪。
你大概会遇到一个异常,并且程序正在退出,因为(带回溯)。 因此,要做的第一件事就是在完全退出之前(可能会给出一条消息,给出示例)来捕获该异常。
在你的main
尝试这样的事情:
import sys, traceback
def main():
try:
do main program stuff here
....
except KeyboardInterrupt:
print "Shutdown requested...exiting"
except Exception:
traceback.print_exc(file=sys.stdout)
sys.exit(0)
if __name__ == "__main__":
main()
也许你想要捕获所有的异常,并且捕获由sys.exit()
引发的SystemExit
异常?
import sys
try:
sys.exit(1) # Or something that calls sys.exit()
except SystemExit as e:
sys.exit(e)
except:
# Cleanup and reraise. This will print a backtrace.
# (Insert your cleanup code here.)
raise
一般来说,使用except:
没有命名异常是一个坏主意。 你会捕捉到所有你不想捕获的东西 - 比如SystemExit
- 它也可以掩盖你自己的编程错误。 我上面的例子很愚蠢,除非你正在做一些清理工作。 您可以将其替换为:
import sys
sys.exit(1) # Or something that calls sys.exit().
如果您需要退出而不升级SystemExit
:
import os
os._exit(1)
我这样做,在单元测试下运行并调用fork()
。 当分叉进程提升SystemExit
时,Unittest会得到。 这绝对是一个角落案例!
import sys
sys.exit(1)
链接地址: http://www.djcxy.com/p/55181.html