2010-07-29 103 views
5

如何從Exception對象本身獲取完整的堆棧跟蹤?如何從Python中的異常對象獲取堆棧跟蹤?

考慮下面的代碼作爲降低該問題的例子:

last_exception = None 
try: 
    raise Exception('foo failed') 
except Exception as e: 
    last_exception = e 
# this happens somewhere else, decoupled from the original raise 
print_exception_stack_trace(last_exception) 
+0

可能的重複[你如何檢查Python的異常的堆棧跟蹤?](http://stackoverflow.com/questions/2359248/how-can-you-inspect-the-stack-trace-of-一個例外的蟒蛇) – 2010-07-29 11:28:23

+1

嗯,是的,但這個問題沒有(令人滿意)回答! – katrielalex 2010-07-29 11:31:01

回答

2

編輯:我撒謊,對不起。 e.__traceback__是你想要的。

try: 
    raise ValueError 
except ValueError as e: 
    print(e.__traceback__) 

>c:/python31/pythonw -u "test.py" 
<traceback object at 0x00C964B8> 
>Exit code: 0 

這是Python 3中的only valid;你不能在早期版本中使用它。

+0

這不是從異常對象本身,而是從執行軌跡中引發異常。 – camillobruni 2010-07-29 11:20:28

+0

不,在Python 3中顯然是這樣做的......我只是試過這個,它的工作原理! – katrielalex 2010-07-29 11:25:15

+1

@katrielalex,我將如何在Python 2.7中做到這一點,我似乎無法找到它。謝謝。 – Kamilski81 2011-07-08 14:05:28

相關問題