引发异常而在追溯中不“引发”?[重复]
问题内容:
这个问题已经在这里有了答案 :
9年前关闭。
可能重复:
不要在异常堆栈中显示Python提升行
诸如此类的内置异常NameError
使我可以追溯到代码中发生异常的地方。我正在开发一个实用程序模块,它使我感到困惑,如果使用我的模块的代码引发了异常并且在异常之前的追溯是我的raise WhateverError
。
有什么方法可以在python中引发异常并使tracback停止内置异常(无需编写c代码)一帧吗?
问题答案:
纯Python没有提供一种方法来变异现有的追溯对象或创建任意的追溯对象。
>>> exc_info[2].tb_next = None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: readonly attribute
>>> types.TracebackType()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot create 'traceback' instances
请注意,如果有可能做到这一点,您不仅会影响回溯的默认格式,还会干扰人们使用pdb在实用程序模块中进行事后检查错误的能力。
如果您的实用程序模块正在记录回溯或以其他方式格式化了回溯,那么您仅可以在输出中不包含您认为不感兴趣的帧。例如,unittest
当报告运行测试时发生的错误时,标准库的模块会执行此操作。