如何在Python中从异常对象获取堆栈跟踪?

6 投票
1 回答
1381 浏览
提问于 2025-04-16 02:00

我怎样才能从异常对象本身获取完整的堆栈跟踪信息呢?

下面的代码是这个问题的一个简化示例:

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 个回答

3

编辑:我说错了,抱歉。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 中才有效;在之前的版本中是无法使用的。

撰写回答