首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从异常对象中提取回溯信息?

如何从异常对象中提取回溯信息?
EN

Stack Overflow用户
提问于 2018-05-16 11:37:03
回答 2查看 0关注 0票数 0

给定一个Exception对象是否有办法获得它的回溯?我有这样的代码:

def stuff():
   try:
       .....
       return useful
   except Exception as e:
       return e

result = stuff()
if isinstance(result, Exception):
    result.traceback <-- How?
EN

回答 2

Stack Overflow用户

发布于 2018-05-16 19:49:03

在Python 3中

很简单:例外配备了一个__traceback__包含追溯的属性。该属性也是可写的,可以使用异常方法方便地设置with_traceback

raise Exception("foo occurred").with_traceback(tracebackobj)

在Python 2中

这正是Python 3所做的。Python 2解决方案更加丑陋:为您提供了一个专用函数,它只能在子句中使用。它返回一个包含异常,异常类型和当前正在处理的异常的追踪的元组。

所以,如果你的内部except条款,你可以使用的输出sys.exec_info()随着traceback模块做各种有用的东西:

>>> import sys, traceback
>>> def raise_exception():
...     try:
...         raise Exception
...     except Exception:
...         ex_type, ex, tb = sys.exc_info()
...         traceback.print_tb(tb)
...     finally:
...         del tb
... 
>>> raise_exception()
  File "<stdin>", line 3, in raise_exception
票数 0
EN

Stack Overflow用户

发布于 2018-05-16 21:17:18

你可以试试这样的方法:

>>> try:
...     raise Exception()
... except Exception as e:
...     tb = e.__traceback__
...
>>> tb
<traceback object at 0x00000000022A9208>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档