您的位置:首页 > 编程语言 > Python开发

Python:sys模块的exc_info()函数(例外的堆栈追踪1)

2018-11-04 11:53 369 查看
[code]"""
1.sys.exc_info()可返回一个元组对象,分别为例外的类型、例外类的实例、traceback对象,比如下面的例子返回
(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x0000000002EDD048>)
2.traceback对象代表了调用堆栈中每一层次的追踪,可使用tb_next获取更深层次的调用堆栈
3.tb_frame代表了该层追踪的所有对象信息
4.f_code可以获取该层的程序信息,co_filename则表示该程序所在的文件,co_name可获取函数或者模块的名称
"""

import time,sys
def m():
return 1 / 0

def n():
m()

def p():
n()

if __name__ == '__main__':
try:
p()
except:
ttype,tvalue,ttraceback = sys.exc_info()
print(ttype,tvalue,end="\n")
i = 1
while ttraceback:
print("第{}层堆栈信息".format(i))
tracebackCode = ttraceback.tb_frame.f_code
print("文件名:{}".format(tracebackCode.co_filename))
print("函数或者模块名:{}".format(tracebackCode.co_name))
ttraceback = ttraceback.tb_next
i += 1

time.sleep(1)
print("继续执行")

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: