要点概论:
1. 了解错误类型
2. 掌握python异常处理
3. 掌握pycharm调试功能
1.错误类型
编译过程中一般会遇到语法错误,运行时错误和逻辑错误。
1)语法错误:语法是指语句的形式必须符合python语言的要求。在编辑代码时,python会对输入的代码进行语法检查,不但会给出错误提示,而且标出错误位置。
2)运行时错误:有些代码在编写时没有错误,但在运行过程中会发生异常,这类错误称为“运行时错误”,例如执行除数为零的除法运算,打开不存在的文件,列表索引越界等。
3)逻辑错误:又称为语义错误,表现形式是程序运行时不报错,但结果不正确,这往往是由于程序存在逻辑上的缺陷。
例如:运算符使用的不合理,语句的次序不对,循环语句的起始终值不正确等,都是逻辑错误的表现形式。对于逻辑错误,python解释器无能为力,只能由程序员自行发现和解决。
2. 异常处理
异常(exception)是因程序的例外,违例,出错等情况而在正常控制流之外采取的行为。异常一般分为如下两个阶段:
1)第一个阶段是引起异常发生的错误。当一个错误发生了,异常被打印出来,称为未处理异常,这时因为没有代码来明确地关注和处理异常,异常被缺省处理,自动输出一些调试信息并终止运行。
2)第二个阶段是检测并处理异常,如果通过代码去明确地处理异常,则程序不会终止运行,并能增大容错性。python 提供 try ... except语句处理异常,通过 raise 语句引发异常。
python的 try 语句有两种风格,一种是处理异常(try ... except),另一种是无论是否发生异常都将执行最后的代码(try ... finally)。
① try ... except 语句
提供了异常处理机制,保护可能导致运行时错误的某些代码行。格式如下:
try: try 块 #被监控的语句 except Exception[, reason]: except 块 #处理异常的语句
try 字句中的代码块防止可能出现异常的语句,except 字句中的代码块处理异常.
② try ... finally 语句
无论是否发生异常,都要确保资源释放代码的执行。
一般来说,如果没有发生错误,执行过 try 语句块之后执行 finally 语句块,完成整个流程。
如果 try 语句块发生了异常,抛出了这个异常,会执行 except 语句块,然后运行 finally 语句块进行资源释放处理。格式如下:
try: try 块 #被监控的语句 except Exception[,reason]: except 块 #处理异常的语句 finally: finally块
except语句用法:
分句形式 | 说明 |
except Exception | 捕获所有异常类型 |
except name | 只捕获指定类型异常 |
except name,value | 捕获所列异常,并获得抛出的异常对象 |
except (name1,name2) | 捕获任何列出类型的异常 |
except(name1,name2),value | 捕获任何列出类型的异常,并获得抛出的异常对象 |
else | 如果没有异常发生,则运行 |
finally | 不管有没有异常,都运行此代码块 |
3 .pycharm 调试功能(待补充)
4 . 调试策略
调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。调试的关键在于推断程序内部的错误位置及原因。
1)试探法:凭经验猜测,基于错误出现的所有相关数据,假想一个错误原因,用这些数据证明或反驳它;或者一次列出所有可能的原因,通过测试测试一一排除。
只要某次测试结果说明某种假设已初现端倪,则立即精华数据,进一步进行深入的测试。
2)回溯法:由错误症状最先出现的地方,沿控制流向回检查,直到找到错误根源或确定错误产生的范围。
这种方法适用于小型程序。例如,程序中发现错误处是某个打印语句。通过输出值可判断程序在这一点上变量的值,再从这一点出现,回溯程序的执行过程,
反复考虑:“如果程序在这一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样......”,直到找到错误的位置。
3)对分法:根据关键点插入的位置将程序分成两个部分,分别进行调试。
4)归纳法:归纳法是一种从特殊推断一般的系统化思考方法。归纳发调试的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。
5)强行排错:这种调试方法不需要过多的思考,目前使用较多,但效率较低。
① 在程序特定部位设置打印语句,把打印语句插在出错的源程序的各个关键变量改变部位,重要分支部位,子程序调用部位,跟踪程序的执行,监视重要变量的变化。
② 自动调试工具。利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。
附录:
高级程序设计语言的 IDE(https://zhidao.baidu.com/question/1767421579537008180.html) 编程环境一般有3种调试工具,分别是单步运行,设置断点和监视变量。
将这3种i调试工具有机地组合使用,可以帮助读者分析思考程序,找到语义错误。
1)单步运行:又名逐语句运行,使得程序一行一行地执行, pycharm IDE 用粉红色光带表示程序当前的运行位置。
2)设置断点:程序运行到断点处就停止了,不能再往下执行。断点是挂起程序执行的一个标记,程序执行到断点处会自动暂停,不再往下执行。可以通过单步运行和监视变量分析代码进行调试。
3)查看器:添加查看器用于监视变量,通过逐语句的单步执行,观察变量是如何一步一步的改变。