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

8 投票
1 回答
3718 浏览
提问于 2025-04-16 21:06

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

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

last_exception = None
try:
    raise Exception('foo failed')
except Exception as e:
    print "Exception Stack Trace %s" % e

1 个回答

5

堆栈跟踪(stack trace)并不是直接保存在异常对象里的。不过,你可以使用 sys.exc_info()traceback 模块来打印最近一次异常的堆栈跟踪。举个例子:

import sys
import traceback

try:
    raise Exception('foo failed')
except Exception as e:
    traceback.print_tb(*sys.exc_info())

如果你不想立刻显示堆栈跟踪,可以把 sys.exc_info() 的返回值存储到某个地方。

撰写回答