5
我想不通爲什麼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
看的文檔的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