马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-2-20 18:36 编辑
Python traceback 模块打印异常信息
Python 的 traceback 模块为我们提供了追踪异常的借口,用 traceback 模块可以很方便地打印出异常信息,而不用一报错就退出程序。
traceback 常用的两个函数如下:
- print_exc(limit=None, file=None, chain=True)
- format_exc(limit=None, chain=True)
其中 print_exc 是直接将异常信息输出到 sys.stderr 中,而 format_exc 返回完整的异常信息。可以通过设置 file 参数指定异常输出到哪个文件中。
例如:
import traceback
try:
num = int(input("请输入一个整数:"))
print(1 / num)
except Exception:
print("啊哦,出错了\n")
traceback.print_exc()
input()
运行结果:
可以看到在 Python Launcher 中运行时,程序报错时打印完异常信息时并没有直接退出,因为程序后面有句 input() 。
format_exc() 与 print_exc() 稍有不同 ,format_exc() 是返回表示异常信息的字符串,并不会打印。
例如:
import traceback
try:
num = int(input("请输入一个整数:"))
print(1 / num)
except Exception:
print("啊哦,出错了\n")
err = traceback.format_exc()
print(err + "\n")
print(err[:15])
print(err[-15:])
input()
运行结果:
请输入一个整数:0
啊哦,出错了
Traceback (most recent call last):
File "E:/Programming/Python/项目/demo.py", line 6, in <module>
print(1 / num)
ZeroDivisionError: division by zero
Traceback (most
vision by zero
请输入一个整数:1.5
啊哦,出错了
Traceback (most recent call last):
File "E:/Programming/Python/项目/demo.py", line 5, in <module>
num = int(input("请输入一个整数:"))
ValueError: invalid literal for int() with base 10: '1.5'
Traceback (most
base 10: '1.5'
|