栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

`inspect.trace()`与`traceback`

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

`inspect.trace()`与`traceback`

从inspect.trace的文档中:

检查。 跟踪 ([上下文])

返回当前帧与其中引发了当前正在处理异常的帧之间的堆栈的帧记录列表。最后一个条目表示引发异常的位置。

这表明它提供了一种很好的方法来将

sys.exc_info()[2]
您获得的帧进行切片和切块。

如果查看源代码,则:

def trace(context=1):    """Return a list of records for the stack below the current exception."""    return getinnerframes(sys.exc_info()[2], context)

(与3.2或2.7相同),正是它的功能,但是它通过

getinnerframes
,将其传递给,并根据文档字符串用一些有用的信息对其进行注释:

获取回溯框架和所有较低框架的记录列表。

每个记录包含一个框架对象,文件名,行号,函数名,上下文行列表以及上下文中的索引。

而且,由于我对这实际上意味着什么感到好奇:

import sysimport inspectfrom pprint import pprintdef errorer():    raise Exception('foo')def syser():    try:        errorer()    except Exception, e:        tb = sys.exc_info()[2]        print tb.tb_frame        print tb.tb_lasti        print tb.tb_lineno        print tb.tb_nextdef inspecter():    try:        errorer()    except Exception, e:        pprint(inspect.trace())

从提示中调用时,同时回想起其中许多字段和对象具有易于查找的定义:

>>> syser()<frame object at 0x1441240>610<traceback object at 0x13eb3b0>>>> inspecter()[(<frame object at 0x14a5590>,  '/tmp/errors.py',  22,  'inspecter',  None,  None), (<frame object at 0x14a21b0>,  '/tmp/errors.py',  8,  'errorer',  None,  None)]

(行号跳来跳去,因为我搞砸了格式)

inspect.trace()
显然好一点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号