繁体   English   中英

Python 使用 traceback.print_exc() 打印 AttributeError 的回溯时出现类型错误

[英]Python TypeError when printing traceback of AttributeError using traceback.print_exc()

一个可重现的例子:

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

这将在traceback.print_exc(e)引发错误:

TypeError: '>=' not supported between instances of 'AttributeError' and 'int'

任何建议为什么会发生这种情况?

基于文档: Python Docs - traceback module

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

您的代码必须是:

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

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

print_exc不以异常 object 作为参数,它使用sys.exc_info()获取异常信息。 当您传递它e时,它会将其解释为limit的位置参数,该参数需要一个int类型。 我相信,如果您只是删除参数,您将得到您正在寻找的结果。

traceback.print_exc 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM