在追溯中没有“加注”的情况下提高异常?

时间:2011-06-20 11:59:09

标签: python exception raise

  

可能重复:
  Don't show Python raise-line in the exception stack

内置NameError之类的异常等,让我回到我的代码中发生异常的点。我正在研究一个实用程序模块,如果使用我的模块的代码引发异常,那么异常之前的追溯中的最后一件事是我的raise WhateverError

有没有办法在python中引发异常并让tracback在内置异常中停止一帧(不编写c代码)?

1 个答案:

答案 0 :(得分:3)

纯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模块在​​报告运行测试时发生的错误时执行此操作。