我看过很多关于Python中堆栈跟踪和异常的文章。但还没有找到我需要的。
我有一段Python2.7代码可能会引发异常。我想捕获它并将其完整描述和导致错误的堆栈跟踪(只是我们在控制台上看到的所有内容)分配给一个字符串。我需要这个字符串将其打印到GUI中的文本框中。
像这样的:
try:
method_that_can_raise_an_exception(params)
except Exception as e:
print_to_textbox(complete_exception_description(e))
问题是:什么是函数complete_exception_description
?
使用Python 3,以下代码将格式化一个
Exception
对象,与使用traceback.format_exc()
获得的完全一样:其优点是只需要
Exception
对象(由于记录了__traceback__
属性),因此可以更容易地作为参数传递给另一个函数进行进一步处理。让我们创建一个非常复杂的stacktrace,以演示我们得到了完整的stacktrace:
记录完整的stacktrace
最佳实践是为模块设置记录器。它将知道模块的名称并能够更改级别(以及其他属性,如处理程序)
我们可以使用此记录器获取错误:
哪些日志:
因此,我们得到的输出与出现错误时相同:
只得到绳子
如果您真的只需要字符串,请改用
traceback.format_exc
函数,演示如何在此处记录字符串:哪些日志:
请参阅
traceback
模块,特别是format_exc()
函数。Here。相关问题 更多 >
编程相关推荐