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

时间:2011-07-08 15:00:51

标签: python exception-handling

如何从Exception对象本身获取完整的堆栈跟踪?

请考虑以下代码作为问题的简化示例:

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

1 个答案:

答案 0 :(得分:5)

堆栈跟踪本身不存储在异常对象本身中。但是,您可以使用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()的返回值。