2010-07-29 4 views
5

Comment puis-je obtenir la trace de la pile complète à partir de l'objet Exception lui-même?Comment obtenir la trace de pile à partir d'un objet Exception en Python?

Consultez le code suivant comme exemple réduit du problème:

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

duplication possible de [Comment pouvez-vous inspecter la trace de pile d'une exception en Python?] (Http://stackoverflow.com/questions/2359248/how-can-you-inspect-the-stack-trace-of- an-exception-in-python) –

+1

Eh bien, oui, mais cette question n'est pas (satisfaisante) répondue! – katrielalex

Répondre

2

Edit: Je mentais, désolé. e.__traceback__ est ce que vous voulez.

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

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

Ceci est only valid dans Python 3; vous ne pouvez pas le faire dans les versions antérieures.

+0

ce n'est pas de l'objet exception lui-même, mais à partir de la trace d'exécution l'exception est lancée. – camillobruni

+0

Non, en Python 3, il semble que ... Je viens d'essayer cela et ça fonctionne! – katrielalex

+1

@katrielalex, comment ferais-je cela en Python 2.7, je ne peux pas sembler le trouver. Merci. – Kamilski81

Questions connexes