一般情况下我们try except只能获取简单的错误信息, 无法精准的定位错误位置, 为错误排查带来了很大的不便
例如:
def test():
try:
return 1 / 0
except Exception as e:
print(e)
return 0
if __name__ == "__main__":
test()
division by zero
0
想象一下当系统庞大起来之后我们只知道有一个地方我们使用了0作为除数, 但我们并不能很快的定位是哪一个文件哪一行报的错, 我们接下来介绍的traceback库就是用来解决这个问题的, 我们在捕获异常的同时还能获取详细的异常信息
import traceback
def test():
try:
return 1 / 0
except Exception as e:
# 默认在终端打印异常信息, 默认色彩是红色
traceback.print_exc()
# 使用变量接收错误信息
err = traceback.format_exc()
print(err) # 使用print打印将不具备色彩
return 0
if __name__ == "__main__":
print(test())
Traceback (most recent call last):
File "E:/_git_work/css/v3/test2.py", line 6, in test
return 1 / 0
ZeroDivisionError: division by zero
Traceback (most recent call last):
File "E:/_git_work/css/v3/test2.py", line 6, in test
return 1 / 0
ZeroDivisionError: division by zero
0
如上所示我们能获取详细的报错文件和报错位置