Python学习笔记10_错误、调试和测试

时间:2023-02-25 18:45:54

错误处理

try...except...finally...,不同类型的错误由不同的except语句块处理,如果没有错误发生,可以在except语句块后面加一个else,没有错误发生时,执行else语句,finally语句如果有,一定会被执行(可以没有finally语句)。

try:
print('try...')
r = 10 / int('2')
print('result:', r)
except ValueError as e:
print('ValueError:', e)
except ZeroDivisionError as e:
print('ZeroDivisionError:', e)
else:
print('no error!')
finally:
print('finally...')
print('END')

调用堆栈,如果错误没有被捕获,一直往上抛,最终由Python解释器捕获,打印错误信息后程序退出。

记录错误,logging.exception(e),程序打印完错误信息后会继续执行。

抛出错误,我们可以自定义错误的class,选择好继承关系。用raise语句抛出一个错误的实例。raise语句如果不带参数,会把当前错误原样抛出,让顶层调用者处理。

调试

print(),打印有可能出问题的变量。

断言assert,如果断言失败,assert语句会抛出AssertionErrorpython -o file.py关闭断言。

logging,允许指定记录信息的级别,有debuginfowarningerror等几个级别。通过配置,一条语句可以输出到不同地方,如console和文件。

import logging
logging.basicConfig(level = logging.INFO) # 控制输出哪个级别的信息

调试器pdb,python -m pdb file.py,命令l可以查看代码,命令n可以单步执行代码,任何时候可以出入命令p 变量名来查看变量,命令q结束调试。

pdb.set_trace(),在可能出错的地方放一个set_trace,可以设置一个断点,程序会在pdb.set_trace()暂停并进入调试环境,命令p查看变量,命令c继续运行。

支持调试功能的IDE,如PyCharm,Eclipse+pydev插件。

单元测试

文档测试