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

Kam*_*i81 7 python exception-handling

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

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

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

Mic*_*ael 5

堆栈跟踪本身不存储在异常对象本身中.但是,您可以使用sys.exc_info()traceback模块打印上一个最近异常的堆栈跟踪.例:

import sys
import traceback

try:
    raise Exception('foo failed')
except Exception as e:
    traceback.print_tb(*sys.exc_info())
Run Code Online (Sandbox Code Playgroud)

如果您不想立即显示堆栈跟踪,则应该可以存储sys.exc_info()某处的返回值.

  • 另外,我建议使用http://docs.python.org/library/traceback.html#traceback.format_exc来获取格式化的回溯字符串,而不是traceback.print_tb(*sys.exc_info()). (4认同)