文档位置
https://docs.python.org/3/library/traceback.html
traceback模块总览
traceback提供了一个标准接口来提取、格式化和打印 Python 程序的堆栈跟踪结果。它完全模仿Python 解释器在打印堆栈跟踪结果时的行为。当我们想要在程序控制下打印堆栈跟踪结果时,这是非常有用的,such as in a “wrapper” around the interpreter。
这个模块使用traceback对象(这是存储在sys.last_traceback中的对象类型变量),并作为sys.exc_info()的第三项被返回。
traceback.print_tb()
traceback.print_tb(tb, limit=None, file=None) 将traceback中的limit层堆栈信息打印到file处
参数解释:
- tb,指代traceback对象
- limit,要打印的堆栈层数,正数为从入口开始数,负数则从最后一层往前数,
None则打印全部 - file,指代traceback输出位置,如果为None,则输出到
sys.stderr,可以传递一个打开的文件对象,或者file-like对象
|
|
输出:
|
|
traceback.print_exception()
traceback.print_exception(etype, value, tb, limit=None, file=None, chain=True) 打印异常信息和traceback中的堆栈信息到file中。
它和print_tb()不同的地方:
- 如果
tb不是None,则会打印Traceback (most recent call last) - 在堆栈信息之后打印etype和value
- 如果type(value)的值是
SyntaxError且value有适合的格式,那么它将打印发生SyntaxError的行,并带有指示错误的大致位置的插入符号
参数train如果是True,则将异常链(异常中的__cause__或__context__)全部打印
|
|
输出:
|
|
traceback.print_exc()
traceback.print_exc(limit=None, file=None, chain=True)是print_exception的速记(shorthand)
traceback.print_last()
traceback.print_last(limit=None, file=None, chain=True)等价于print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file, chain)
traceback.print_stack()
traceback.print_stack(f=None, limit=None, file=None)
同样是打印limit层堆栈信息到file里。不同的是f参数,用于指定要启动的备用堆栈帧(stack frame)
待续