sys.exit() 不带任何参数只会终止执行而无需任何进一步的信息。
如果您需要查看女巫sys.exit 线路被调用,您有多种选择。这里有 2 个简单的解决方案。
1°) 简单的方法
sys.exit() 接受一个参数。当您传递一个字符串时,该字符串将在退出时打印。您可以利用这一点来跟踪使用了女巫出口点。
例子:
if True:
sys.exit("exit point 1")
else:
sys.exit("exit point 2")
执行时会打印以下内容:
exit point 1
这非常简单,但需要完整传递您的代码才能更改所有sys.exit 调用。幸运的是,有一个侵入性较小的选项。
2°) 使用SystemExit 异常
sys.exit(),最终引发SystemExit 异常。与其他所有异常一样,它可以被捕获,因此您可以使用 traceback 模块打印调用堆栈。
您所要做的就是用try: except SystemExit: 包围您的主程序,以拦截sys.exit() 调用并打印调用堆栈。
这是一个简单的例子:
导入系统
导入回溯
def test():
print ("entering test")
sys.exit()
print ("leaving test")
try:
test()
sys.exit()
except SystemExit as e:
traceback.print_exc()
raise e
这个程序的输出将是:
entering test
Traceback (most recent call last):
File "test.py", line 10, in <module>
test()
File "test.py", line 6, in test
sys.exit()
SystemExit
所以你可以看到你通过文件 test.py 的第 6 行退出了
python 标准库文档中详细记录了该行为:
https://docs.python.org/3/library/sys.html(章节 sys.exit)