2010-07-29 14 views
5

Tam yığın izlemesini Exception nesnesinin kendisinden nasıl alabilirim?Yığın izini Python'daki bir Özel Durum Nesnesinden nasıl alırım?

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

olası bir kopyası [Python'da bir istisnanın yığın izini nasıl denetlersiniz?] (Http://stackoverflow.com/questions/2359248/how-can-you-inspect-the-stack-trace-of- bir istisna-python) –

+1

Evet, ama bu soru (tatmin edici) cevaplanmadı! – katrielalex

cevap

2

Düzenleme::

probleminden dolayı Örnek olarak aşağıdaki kodu düşünün Özür, yalan. e.__traceback__ istediğin şey.

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

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

Bu Python 3'teki only valid; Daha önceki sürümlerde yapamazsınız.

+0

bu istisna nesnesi kendisinden değil, yürütme izlemesi içinden istisna atılır. – camillobruni

+0

Hayır, Python 3'te görünürde ... Bunu denedim ve işe yarıyor! – katrielalex

+1

@katrielalex, bunu Python 2.7'de nasıl yapardım, onu bulamıyorum. Teşekkürler. – Kamilski81