Python的traceback模块用于从程序运行的堆栈中提取,格式化或打印程序目前执行的上下文信息。
1 | import traceback |
traceback.print_exc()
函数只是traceback.print_exception()
函数的一个简写形式,- 它们获取异常相关的数据都是通过sys.exc_info()函数得到的。
traceback.print_exc()跟traceback.format_exc()有什么区别
format_exc()返回字符串,print_exc()则直接给打印出来。
即traceback.print_exc()与print traceback.format_exc()效果是一样的。
print_exc()还可以接受file参数直接写入到一个文件。
比如写入到tb.txt文件去。
1
traceback.print_exc(file=open('tb.txt','w+'))
traceback.print_exc() 方法打印出的信息包括3 部分:
错误类型(IndexError)
错误对应的值(list index out of range)
具体的 trace 信息,包括文件名、具体的行号、函数名以及 对应的源代码。
Traceback 模块提供了一系列方法来获取和显示异常发生时候的trace 相关信息,下面列举几个常用的方法:
traceback.print_exception(type, value, traceback[, limit[, file]])
,
根据limit 的设置打印栈信息,file 为 None 的情况下定位到sys.stderr,否则则写入文件;其中type、value、 traceback 这 3 个参数对应的值可以从 sys.exc_info() 中获取。raceback.print_exc([limit[, file]])
,
为print_exception() 函数的缩写,不需要传入type、 value、traceback 这 3 个参数。traceback.format_exc([limit])
,与 print_exc() 类似,区别在于返回形式为字符串。traceback.extract_stack([file,[, limit]])
,从当前栈帧中提取 trace 信息