回溯 什么是Python回溯? Traceback( 五 )


现在,当你使用一个URL来运行此脚本时,将引发一个ConnectionError,系统会打印一个状态码-1,以及Connection Error的内容:

回溯 什么是Python回溯? Traceback

文章插图
 
这运行的很好 。然而,在大多数实际系统中,你并不希望只是静默化异常和生成的回溯,而是希望去记录回溯 。记录回溯可以让你更好地理解程序中哪些地方出错了 。
注意: 要了解更多关于Python日志系统的信息,请查看Python中的logging 。
你可以通过导入logging包,获取一个日志记录器并在try和except块的except部分中调用该日志记录器的.exception()来在你的脚本中记录回溯 。你的最终脚本应该会类似于以下代码:
回溯 什么是Python回溯? Traceback

文章插图
 
现在,当你对一个有问题的URL运行此脚本时,它会打印预期的-1和Connection Error,同时也会记录回溯:
回溯 什么是Python回溯? Traceback

文章插图
 
默认情况下,Python将向标准错误(stderr)发送日志消息 。看起来我们根本没有抑制回溯输出 。但是,如果你在重定向stderr时再次调用它,你可以看到日志系统正在工作,我们可以将日志保存起来,以备以后使用:
回溯 什么是Python回溯? Traceback

文章插图
 
结论Python回溯包含了大量的信息,可以帮助你发现你的Python代码中出现的错误 。这些回溯看起来有点吓人,但是一旦你把它分解开来,看看它想向你展示什么,它们就会非常有用 。逐行浏览一些回溯将会使你更好地理解它们包含的信息,并帮助你最大限度地利用它们 。
在运行代码时获得Python回溯输出是改进代码的一个机会 。这是Python试图帮助你的一种方式 。
既然你已经了解了如何阅读Python回溯,那么你可以从学习更多有关诊断回溯输出所告诉你的问题的一些工具和技术中获益 。Python的内置traceback模块可用于处理和检查回溯 。当你需要从回溯输出中获得更多信息时,traceback模块是很有用的 。了解更多有关调试Python代码的技术也会很有帮助 。
 
英文原文:https://realpython.com/python-traceback/ 译者:野生大熊猫




推荐阅读