参考资料:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832254674584228cd773d4db5a02ab85d2db4f83e000
https://blog.csdn.net/u013378306/article/details/70146102
1、捕获错误
Python使用try ...except...finally的方式捕获错误。下面的话摘自参考资料:
当我们认为某些代码可能会出错时,就可以用try
来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except
语句块,执行完except
后,如果有finally
语句块,则执行finally
语句块,至此,执行完毕。Python的错误其实也是class,所有的错误类型都继承自BaseException
,所以在使用except
时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。点击这里可查看Python定义的错误类型。2、错误处理在except语句块内捕获错误后,对错误的处理方式包括:
(1)使用print语句将错误输出,继续执行后面的程序。
(2)使用logging函数输出日志,继续执行后面的程序。使用logging函数前,需要调用logging.basicConfig对日志记录参数进行配置,详细配置方式可参考参考资料2。
(3)使用raise将异常抛出。语法格式为:raise 错误类型实例,这里的错误类型可以与捕获的错误类型不一致。
3、调试模式
廖老师语录:程序能一次写完并正常运行的概率很小,基本不超过1%。在可能出错的地方,可以通过以下3中手段辅助调试程序:(1)直接使用print语句将需要查看的信息输出。(2)使用assert(断言):断言捕获到符合条件的错误时,在按照断言定义输出指定信息的同时抛出AssertionError。(3)使用logging(日志)(4)进入调试模式:调用pdb.set_trace进入调试模式。调试模式下常见的命令包括: l:查看代码 n:单步执行 c:继续运行 q:结束运行 p [变量名]:查看变量值注:支持python的集成开发环境都集成了单步调试模式,可以直接在IDE的代码编辑器内设置断点。下面给出我的学习代码:
import logging import pdb #配置日志格式 logging.basicConfig(level=logging.INFO, filename='log.txt', format='%(asctime)s day7[line:%(lineno)d]:%(message)s') #定义一个函数,用于调试 def test(): #接收用户输入 m = raw_input("input an integer:") #设置断点,进入单步调式模式 pdb.set_trace() try: print 'try' #使用断言调试程序 assert isinstance(m, int), logging.info('invalid input') mm = int(m) assert mm != 0, 'input cannot be zero' n = 10 / mm print n except BaseException, e: raise #logging.exception(e) #print e.message finally: print 'finally' print 'END' test()今天就学习到这里啦,下一节从测试开始学习。