2011-06-20 60 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模塊在報告運行測試時發生的錯誤時會執行此操作。

相關問題