traceback — Print or retrieve a stack traceback
源码: Lib/traceback.py
该模块提供了一个标准接口,用于提取、格式化和打印Python程序的栈跟踪。它在打印栈跟踪时完全模仿了Python解释器的行为。当您想要在程序控制下打印栈跟踪时,例如在解释器周围的“包装器”中,这很有用。
该模块使用 traceback 对象——存储在 sys.last_traceback
变量中的对象类型,并作为 sys.exc_info()
中的第三个项返回。
sys.exc_info()
返回一个 tuple(type, value, traceback)
:
type
为异常类型,
value
为异常实例
traceback
为 traceback 对象
该模块定义了以下函数:
- traceback.
print_tb(tb, limit=None, file=None)
默认打印所有层级的栈跟踪信息;若limit
为正,则可打印指定层数信息。
默认输出至sys.stderr
;也可指定file
输出至文件 - traceback.
print_exception(etype, value, tb, limit=None, file=None, chain=True)
利用 traceback 对象 tb 将 exception 信息和栈跟踪条目打印到文件。- 与
print_tb()
的区别在于以下方面:- 若
tb
不是None
,则只打印最近一次的 Traceback - 在堆栈跟踪后附加上异常
etype
和值 等信息 - 若
type(value)
是SyntaxError
并且value
具有适当的格式,则它会打印出现语法错误的行,并使用插入符号指示错误的大致位置。
- 若
- 可选的
limit
参数与print_tb()
中的含义相同。 - 若
chain
为true
(默认值),则也将打印 chained exceptions(__cause__
或__context__
属性),就像解释器本身在打印未处理的异常时所做的那样。
- 与
- traceback.
print_exc(limit=None, file=None, chain=True)
是print_exception(*sys.exc_info(), limit, file, chain)
的简写。 - traceback.
format_exc(limit=None, chain=True)
与print_exc(limit)
类似,但是返回一个字符串而不是打印到文件。
网友评论