【发布时间】:2016-11-03 13:23:27
【问题描述】:
在我的代码中,我试图处理一个逻辑错误。我想用错误代码退出程序,如果我执行sys.exit(1) 它会引发回溯错误,这是我不想要的。
但是,如果我这样做 os._exit(1) 它不是更清洁的出口。
我的需求:
像 os 那样退出,只使用错误代码,但需要像 sys 那样更干净的退出。
【问题讨论】:
标签: python python-2.7 error-handling stack-trace exit
在我的代码中,我试图处理一个逻辑错误。我想用错误代码退出程序,如果我执行sys.exit(1) 它会引发回溯错误,这是我不想要的。
但是,如果我这样做 os._exit(1) 它不是更清洁的出口。
我的需求:
像 os 那样退出,只使用错误代码,但需要像 sys 那样更干净的退出。
【问题讨论】:
标签: python python-2.7 error-handling stack-trace exit
使用sys.exit(1)无论如何。 sys.excepthook() 中的标准 Python 回溯挂钩干净地处理 SystemExit,不会打印回溯。来自SystemExit exception documentation:
此异常由
sys.exit()函数引发。不处理时,Python解释器退出; 不打印堆栈回溯。
我的大胆强调。
如果您的程序有顶级异常处理程序,请不要捕获SystemExit。通常,您不使用笼统的 except: 语句,而是通过捕获 except Exception: 来做到这一点。
【讨论】: