【问题标题】:How do I get the stack trace from an Exception Object in Python?如何从 Python 中的异常对象获取堆栈跟踪?
【发布时间】:2010-07-29 11:12:57
【问题描述】:

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

将以下代码视为问题的简化示例:

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)

【问题讨论】:

标签: python exception-handling stack-trace


【解决方案1】:

编辑:我撒谎了,对不起。 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 中的only valid;你不能在早期版本中这样做。

【讨论】:

  • 这不是来自异常对象本身,而是来自抛出异常的执行跟踪。
  • 不,在 Python 3 中它显然可以...我刚刚尝试过,它可以工作!
  • @katrielalex,我将如何在 Python 2.7 中执行此操作,我似乎找不到它。谢谢。
  • @Kamilski:据我所知,您无法直接从异常对象中获取它;你必须使用traceback 和/或inspect 模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 2011-08-30
  • 2010-12-20
  • 2023-03-22
  • 2011-06-01
  • 2011-01-05
  • 2015-03-17
相关资源
最近更新 更多