# -*- coding: utf-8 -*-
gList = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
def f():
gList[5]
return g()
def g():
return h()
def h():
del gList[2]
return i()
def i():
gList.append('i')
print(gList[7])
if __name__ == '__main__':
try:
f()
except IndexError as ex:
print("an element out of range")
print(ex)
输出
利用traceback
模块
开头添加
import traceback
结尾改成
except IndexError as ex:
print("an element out of range")
print(ex)
traceback.print_exc()
输出
程序运行会输出异常发生时候完整的栈信息,包括调用顺序、异常发生的语句额、错误类型等。
traceback.print_exc()
方法打印出的信息包括3部分:错误类型、错误对应的值以及具体的trace
信息,包括文件名、具体的行数、函数名以及对应的源代码。
Traceback
模块常用的几个方法
traceback.print_exception(type,value,traceback[,limit[,file]])
,根据limit
的设置打印栈信息,file
为None
的情况下定位到sys.stderr
,否侧则写入文件;其中type、value、traceback
这3个参数对应的值可以从sys.exc_info()
中获取。traceback.print_exc([limit[,file]])
,为print_exception()
函数的缩写,不需要传入type、value、traceback
这3个参数。traceback.format_exc([limit])
,print_exc()
类似,区别在于返回字符串。traceback.extract_stack([file,[,limit]])
,从当前栈帧中提取trace
信息。