Python traceback捕获并打印异常(Python中的异常栈跟踪)
Python中用于处理异常栈的模块是traceback模块,它提供了 print_exception、format_exception等输出异常栈等常用的工具函数。
异常处理是日常操作了,但是有时候不能只能打印我们处理的结果,还需要将我们的异常打印出来,
这样更直观的显示错误,下面来介绍 traceback 模块来进行处理
try:
1 / 0
except Exception as e:
print(e)
输出结果是:
division by zero
只知道是报了这个错,但是却不知道哪个文件哪个函数哪一行报的错。
使用 traceback
import traceback
try:
1 / 0
except Exception as e:
traceback.print_exc()
输出结果
Traceback (most recent call last):
File "/Users/edz/Documents/myPro/my_study/python_library/py_traceback.py", line 25, in <module>
1 / 0
ZeroDivisionError: division by zero
这样非常直观有利于调试。
traceback.print_exc()跟traceback.format_exc()有什么区别呢?
format_exc()返回字符串,print_exc()则直接给打印出来。
即traceback.print_exc()与print(traceback.format_exc())效果是一样的。
print_exc()还可以接受 file 参数直接写入到一个文件。比如:
traceback.print_exc(file = open('tb.txt', 'w+'))
写入到 tb.txt 文件中。