2011-06-20 48 views
5

可能重复:
Don't show Python raise-line in the exception stack在追踪中没有“提高”的情况下引发异常?

内置在像NameError等异常给我一个回溯到我的代码点发生异常。我正在研究一个实用程序模块,它让我感到担忧,即如果使用我的模块的代码引发异常,并且例外情况是我的raise WhateverError之前的最后一件事情。

有没有什么办法可以在python中引发异常,并让tracback停止一帧内存异常(无需编写c代码)?

回答

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

相关问题