traceback.format_exc/print_exc回报无期待,当回溯
问题描述:
我想不通为什么traceback.format_exc()在下面的例子将返回“无”:使用Python 2.7.1traceback.format_exc/print_exc回报无期待,当回溯
#!/usr/bin/env python
import sys
import traceback
def my_excepthook(type, value, tb):
print type.__name__
print value
# the problem: why does this return "None"?
print traceback.format_exc(tb) # see http://docs.python.org/library/traceback.html#traceback.format_exc
sys.excepthook = my_excepthook # see http://docs.python.org/library/sys.html#sys.excepthook
# some code to generate a naturalistic exception
a = "text"
b = 5
error = a + b
,我得到下面的输出:
TypeError
cannot concatenate 'str' and 'int' objects
None
而是3号线“无”的,我期望得到什么发生在我注释掉sys.excepthook行:
Traceback (most recent call last):
File "log-test.py", line 17, in <module>
error = a+b
答
尝试在my_excepthook这样的改变:
print "".join(traceback.format_exception(type, value, tb))
+0
PasteBT,谢谢,你钉了它。 (猜测我一直假设解决方案会更容易/更明显)。 – 2012-03-13 04:33:49
看的文档的format_exc - 你不需要通过'tb'作为参数。您可能打算使用'format_tb(tb)'代替。 – 2012-03-12 22:50:16
Thomas K,你说得对,'format_exc()'带有一个可选的限制,而不是一个追踪对象。上面的代码出现在很多试验和错误的结尾(我试图按照我希望它们工作的方式进行尝试)。在Python文档中,我发现自己经常被'module.function()'和'object.function()'混淆,并且花了很多时间为了'tb.format_exc()'不工作而搔头。 – 2012-03-13 04:40:25