views:

57

answers:

1

How can I get the full stack trace from the Exception object itself?

Consider the following code as reduced example of the problem:

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)
+1  A: 

Edit: I lied, sorry. e.__traceback__ is what you want.

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

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

This is only valid in Python 3; you can't do it in earlier versions.

katrielalex
this is not from the exception object itself but from within the execution trace the exception is thrown in.
dh82
No, in Python 3 it apparently does... I just tried this and it works!
katrielalex