我正在寻找可能尝试保存回溯对象并以某种方式将其腌制到我可以访问的文件中。一个用例的示例是,如果我将一些 python 代码提交给农场计算机以运行并且它失败了,那么能够打开一个会话并访问该回溯以调试问题而不是仅仅看到一个问题会很好回溯的日志。我不知道是否有任何方法可以做到这一点,但认为有必要问一下为什么不能这样做。
2 回答
好的,所以您可以使用traceback.print_exception(type, value, traceback[, limit[, file]])
并将其保存在文本或 json 中,或者您可以参考文档
如果您觉得它有帮助,请标记它是正确的或支持thanx .. :)
根据您编写代码的方式,try 语句可能是您的最佳答案。由于任何错误都只是一个继承 Python 的 builtin 的类Exception
,因此您可以在任何需要有关抛出错误的更多信息的地方引发自定义错误。您只需要重命名错误或传入适当的字符串作为第一个参数。如果您然后try
您的代码并使用 except 语句except CustomError as e
,您可以将您想要的所有信息从 except 语句中的 e 中提取为常规实例。例子:
您的代码将是:
def script():
try: codeblock
except Exception as e: raise Error1('You hit %s error in the first block'% e)
try: codeblock 2
except Exception as e: raise Error2('You hit %s error in the second block' % e)
try: script()
except Exception as e:
with open('path\to\file.txt','w') as outFile:
outFile.write(e)
最后一部分实际上只不过是创建自己的日志文件,但你必须把它写下来,对吧?
至于使用traceback
上面提到的模块,你可以从中得到错误信息。这里的任何命令都可以为您提供回溯列表:http:
//docs.python.org/2/library/traceback.html
另一方面,如果您试图避免查看日志文件,则回溯模块只会为您提供与日志文件相同的内容,但格式不同。在您的代码中添加您自己的错误语句可以为您提供更多信息,而不是ValueError
对实际发生的事情进行神秘的处理。如果您打印回溯到您的特殊错误,它可能会为您提供有关您的问题的更多信息。