如何退出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

上一篇: How to exit from Python without traceback?

下一篇: Using python map and other functional tools