import traceback def foo(arg): try: print(int(arg)) except Exception as e: error=traceback.format_exc() print('error',error) print('type of error',type(error)) foo("777aaa") 打印结果: error Traceback (most recent call last): File "G:/Pycharmprojects/test.py", line 4, in foo print(int(arg)) ValueError: invalid literal for int() with base 10: '777aaa' type of error <class 'str'>
该模块提供了一个标准界面来提取,格式化和打印Python程序的堆栈跟踪。它在打印堆栈跟踪时完全模仿Python解释器的行为。当您要在程序控制下打印堆栈跟踪时,例如在解释器周围的“包装器”中,这很有用。
该模块使用追溯对象 - 这是存储在sys.last_traceback
变量中并作为第三个项目返回 的对象类型sys.exc_info()
。
该模块定义了以下功能:
traceback.
print_tb
(tb,limit = None,file = None )-
打印以限制堆栈跟踪条目从追溯对象tb(从调用方的帧开始),如果limit为正。否则,打印最后的
abs(limit)
条目。如果省略限制,或者None
打印所有条目。如果文件被省略,或None
输出到sys.stderr
; 否则应该是一个打开的文件或类似文件的对象来接收输出。在版本3.5中更改:添加了负限制支持。
traceback.
print_exception
(etype,value,tb,limit = None,file = None,chain = True )-
将异常信息和堆栈跟踪条目从追溯对象tb打印 到文件。这与
print_tb()
以下方式不同:- 如果tb不是
None
,它打印头Traceback (most recent call last):
- 它在堆栈跟踪之后打印异常etype和值
- 如果类型(值)是
SyntaxError
和值具有适当的格式,它打印其中具有指示误差的近似位置脱字符号发生的语法错误的行。
可选的limit参数与
print_tb()
。如果链为真(默认值),则链式异常(的__cause__
或__context__
异常的属性)将被打印,以及像解释打印未处理的异常时本身一样。改变在3.5版本:该VLAN时参数将被忽略,并从类型推断值。
- 如果tb不是
traceback.
print_exc
(limit = None,file = None,chain = True )-
这是一个速记。
print_exception(*sys.exc_info(), limit, file, chain)
traceback.
print_last
(limit = None,file = None,chain = True )-
这是一个速记。一般来说,只有在异常已经达到交互式提示之后才会有效(见 )。
print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file,chain)
sys.last_type
traceback.
print_stack
(f = None,limit = None,file = None )-
打印以限制堆栈跟踪条目(从调用点开始),如果limit为正。否则,打印最后的
abs(limit)
条目。如果省略限制,或者None
打印所有条目。可选的f参数可用于指定要启动的备用堆栈帧。可选文件参数的含义与print_tb()
。在版本3.5中更改:添加了负限制支持。
traceback.
extract_tb
(tb,limit = None )-
返回从追溯对象tb提取的“预处理”堆栈跟踪条目列表。它对于堆栈跟踪的替代格式很有用。可选的limit参数与
print_tb()
。“预处理”堆栈跟踪条目是表示通常为堆栈跟踪打印的信息的4元组(文件名,行号,函数名称,文本)。该文本是开头和结尾的空白剥离的字符串; 如果源不存在,它是None
。
traceback.
extract_stack
(f =无,limit = None )-
从当前堆栈帧中提取原始的追溯。返回值的格式与
extract_tb()
。可选的f和limit 参数与print_stack()
。
traceback.
format_list
(extracted_list )-
给定由
extract_tb()
或extract_stack()
返回的元组列表,或者 返回准备打印的字符串列表。结果列表中的每个字符串对应于参数列表中具有相同索引的项。每个字符串以换行符结尾; 字符串也可能包含内部的换行符,对于源文本行不是的项目None
。
traceback.
format_exception_only
(etype,value )-
格式化回溯的异常部分。的参数是异常类型和值,如由下式给出
sys.last_type
和sys.last_value
。返回值是一个字符串列表,每个都以换行符结尾。通常,列表包含单个字符串; 但是,对于SyntaxError
异常,它包含几行(打印时)显示有关发生语法错误的详细信息。指示发生哪个异常的消息是列表中始终最后一个字符串。
traceback.
format_exception
(etype,value,tb,limit = None,chain = True )-
格式化堆栈跟踪和异常信息。参数与相应的参数含义相同
print_exception()
。返回值是字符串列表,每个字符串都以换行符结尾,一些包含内部换行符。当这些线连接并打印时,打印完全相同的文本print_exception()
。改变在3.5版本:该VLAN时参数将被忽略,并从类型推断值。
traceback.
format_exc
(limit = None,chain = True )-
这样就可以
print_exc(limit)
返回一个字符串而不是打印到一个文件。
traceback.
format_tb
(tb,limit = None )-
一个速记。
format_list(extract_tb(tb, limit))
traceback.
format_stack
(f =无,limit = None )-
一个速记。
format_list(extract_stack(f, limit))
traceback.
clear_frames
(tb )-
通过调用每个帧对象的方法来清除回溯tb中所有堆栈帧的局部变量
clear()
。