可能的重复:
不要在异常堆栈中显示 Python raise-line
内置异常,例如NameError
等给我一个回溯到我的代码中发生异常的点。我正在开发一个实用程序模块,它让我感到烦恼,如果使用我的模块的代码引发异常,则异常之前的回溯中的最后一件事是我的raise WhateverError
.
有没有什么方法可以在 python 中引发异常并使回溯停止一帧以及内置异常(无需编写 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
模块在报告运行测试时发生的错误时执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)