首页 > 解决方案 > 使用 traceback.print_exc() 打印 AttributeError 的回溯时出现 Python TypeError

问题描述

一个可重现的例子:

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'

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

标签: pythontraceback

解决方案


基于文档:Python Docs - traceback 模块

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()使用。


推荐阅读