文档位置
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)
待续