Python 七 - 错误与调试
try错误
1 | try: |
在某段代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此执行完毕
如果没有发生错误发生,可以在except语句块后面加一个else,如果没有错误发生时,会自动执行else语句
记录错误
Python内置的logging模块可以非常容易地记录错误信息:
1 | # err.py |
同样是出错,但程序打印完错误后会继续执行,并正常退出
抛出错误
错误是class,捕获一个错误就是捕获到该class的一个实例,因此,错误不是凭空产生的,而是有意创建抛出的。Python内置函数会抛出很多类型的错误,可以使用raise语句抛出错误
1 | # err.py |
断言
1 | # err.py |
assert的意思是,表达式n != 0应该是True,否则,后面的代码就会出错(AssertionError)
Python解释器可以用-0参数来关闭assert
logging
1 | # err.py |
logging.info()可以输出一段文本,可以使用logging.basicConfig(level=logging.INFO)指定记录信息的级别,有debug、info、warning、error,当指定level=INFO时,其他级别都不起作用,其他同理。
pdb
调试器,可以让程序以单步方式运行,可以随时查看运行状态
1 | # err.py |
然后启动
$ python -m pdb err.py
以参数-m pdb启动后,pdb定位到下一步要执行的代码-> s = '0'输入命令l查看运行代码
输入n可以单步指定代码
也可以输入p 变量名来查看变量
输入q结束调试,退出程序
pdb.set_trace()
只需要import pdb然后在可能出错的地方放一个pdb.set_trace()就可以设置一个断点
1 | # err.py |
运行代码,程序自动在pdb.set_trace()暂停并进入pdb调试环境,可以用c继续运行

