2009-12-23 69 views
4

如果我有一個異常被引發,捕獲,然後在except:塊內再次引發的場景,有沒有辦法捕獲它從中提出的初始堆棧幀?在Python中檢索雙重異常原始堆棧跟蹤

以python退出形式打印的堆棧跟蹤描述第二次引發異常的位置。有沒有辦法引發異常,以顯示異常最初拋出的堆棧框架?

回答

11

這是一個常見的錯誤再次指定異常實例,這樣重新拋出異常:

except Exception, ex: 
    # do something 
    raise ex 

這條原來的追蹤信息,並開始一個新的。你應該做的,而不是爲這個,但沒有明確規定除外(即使用「裸」 raise):

except Exception, ex: 
    # do something 
    raise 

這將保留在堆棧跟蹤的所有原始信息。請參閱this section in the docs以獲得有用的背景信息。

+0

這正是我想要的!謝謝! – user196835 2009-12-23 18:42:04