调试测试
1、错误处理
1.1、try
- python内置了一套try机制。若except后存在finally语句块,则执行except之后会执行finally。
- 不同的错误可以用多个except来捕获。存在Exception。
- 可以跨越多层调用,最底层出错,只要某个上层捕获到了,就可以处理。不需要在每个可能出错的地方去捕获错误,只要在合适的层次去捕获错误就可以了。
1.2、调用栈
- 如果没有错误被捕获,就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。
- 可视作java的报错信息。
1.3、记录错误
- 可以使用内置的logging模块记录错误信息。ex: logging.exception(e).
1.4、抛出错误
- 用raise语句抛出一个错误信息,捕获一个错误就是捕获到该class的一个实例。只有在有必要时才定义错误类型,定义的时候尽量选择内置的错误类型ValueError、TypeError。
- raise如果不带参数,就会把当前错误原样抛出。
2、调试
- 可以直接用print()打印出来;
- 使用断言,凡是用print()的地方,都可以用assert来替代;也需要删除。
- 使用logging,添加logging.basicConfig(level=logging.INFO)就能看到所有输出了。
- 使用pdb,使程序以单步方式运行,可以随时查看运行状态。eg: python -m pdb ex1.py。l代表下一段,n代表单步执行代码,p查看变量,q结束调试。
- 使用pdb.set_trace(),需要import pdb,然后在可能出错的地方放一个pdb.set_trace(),就可以设置断点了。命令c继续执行。