如何从Exception对象本身获取完整的堆栈跟踪?
请考虑以下代码作为问题的简化示例:
last_exception = None
try:
raise Exception('foo failed')
except Exception as e:
print "Exception Stack Trace %s" % e
答案 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()
的返回值。