使用traceback.print_exc()打印AttributeError的回溯时出现Python TypeError

使用traceback.print_exc()打印AttributeError的回溯时出现Python TypeError,python,traceback,Python,Traceback,一个可重复的例子: import traceback X = None try: X.text except (TypeError, AttributeError) as e: traceback.print_exc(e) 这将在回溯时引发错误。打印exc(e): TypeError:“>=”在“AttributeError”和“int”的实例之间不受支持。 有什么建议说明为什么会发生这种情况吗?print\u exc没有将异常对象作为参数,它使用sys.exc\u info(

一个可重复的例子:

import traceback
X = None
try:
    X.text
except (TypeError, AttributeError) as e:
    traceback.print_exc(e)
这将在
回溯时引发错误。打印exc(e)

TypeError:“>=”在“AttributeError”和“int”的实例之间不受支持。


有什么建议说明为什么会发生这种情况吗?

print\u exc
没有将异常对象作为参数,它使用
sys.exc\u info()
来获取异常信息。当您传递它
e
时,它将其解释为
limit
的位置参数,该参数需要类型
int
。我相信如果你把这个论点去掉,你就会得到你想要的结果


根据文档:

traceback.print_exc的第一个参数不是例外,它是回溯深度的限制。您在回溯模块itselse中遇到异常,因为它希望第一个参数是一个限制

您的代码需要:

import traceback
X = None
try:
    X.text
except (TypeError, AttributeError) as e:
    traceback.print_exc()

异常数据作为全局线程保存在
sys.exc_info()
中,这是
traceback.print_exc()
使用的

是的,就这样,在这上面浪费了一个小时,非常感谢你们。