python的错误处理和调试
异常处理
python和其他语言一样,都有异常处理机制。
其语法和其他语言大差不差:
try:
可能出错的代码
except 异常类型1 as 变量名1:
处理异常1的代码
如果需要,还可以抛出新的异常
或者继续处理原来的异常
else:
如果没有异常,就执行这里的代码
finally:
无论是否发生异常都会执行的代码
异常捕捉顺序也和C++一样,从上到下挨个匹配
抛出异常
raise Exception('我是异常')
类似于C++中的throw。在try代码中抛出异常,也可以在except代码中抛出。
该异常一般在except代码中处理,或者在finally代码中处理。
异常类型
所有的异常类型继承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
调试
- print
和C++大致一样,简单调试使用print
print(a)
- 断言
也可以使用断言
assert a == b, 'a不等于b'
若断言失败,则抛出断言异常AssertionError
。
C++的断言在 设置NDEBUG宏后不执行,但是python中的断言一直有效。
不过python断言可以在运行时加 -O
去除
logging
logging模块提供了日志功能,可以记录程序运行的信息。
好处是,可以直接输出到文件中。pdb
这种方法应该是正常调试最喜欢的,可以单步调试,ide的调试就是调用的这个
单元测试
python自带unittest模块,提供了一些简单的单元测试功能。