最近学习了python的错误处理
和几种测试
方法
try except
可以通过try except
方式捕捉异常
1 | try: |
可以捕捉不同类型的错误,编写多个except
1 | try: |
try except同样支持else结构
1 | try: |
某个函数调用出现异常,在上层同样可以捕获到
1 | def foo(s): |
logging
python 提供打日志方式输出异常,并且不会因为出现异常导致程序中断
1 | import logging |
如果想要将异常处理的更细致,可以自定义一个异常类,继承于几种错误类,如ValueError等,在可能出现问题的地方将错误抛出来
1 | class FooError(ValueError): |
错误可以一层一层向上抛,直到有上层能处理这个错误为止
1 | def foo(s): |
logging可以设置不同的级别,通过basicConfig可以设置
1 | import logging |
断言assert
大部分语言都支持assert,python也一样,在可能出错的地方写assert,会在异常出现时使程序终止
1 | def foo(s): |
pdb调试和set_trace
pdb调试用 python -m pdb 文件名.py, 单步执行敲n,退出为q
python 可以在代码里设置断点,在程序自动执行到断点位置暂停,暂停在set_trace
的代码行
1 | import pdb |
单元测试
先实现一个自己定义的Dict类,将文件保存为mydict.py
1 | class Dict(dict): |
python 提供了单元测试的类,开发者可以继承unittest.Test
实现特定的测试类,下面实现Dict的单元测试类,保存为unittestdict.py
1 | import unittest |
运行unittest.py可以检测mydict中Dict类是否有错误
文档测试
文档测试在代码中按照特定格式编写python输入和期待的输出,通过python提供的文档测试类,实现测试代码的目的
1 | class Dict(dict): |