出错原因的分类
-
粗心导致的错误
- 循环语句、if语句、else语句后面的冒号;
- 缩进错误;
- 使用中文符号,引号、冒号、括号;
- 使用+试图将字符串类型与数字类型拼接;
- 比较运算符“==”和赋值运算符“=”混淆;
- 未定义(赋值)变量直接使用。
-
知识不熟练导致的错误
- 索引越界问题;
- 方法参数设置错误;
-
思路不清导致的错误
-
输入类型不对应导致的错误
异常处理机制
- 使用try…except…[else…finally…]
- 语法结构:
try: 函数体 except 错误类型一: 函数体一 ... ... ... except 错误类型N: 函数体N else: 函数体N+1 finlly: 函数体N+2
- 如果执行函数体内无报错,则执行函数体N+1;如果有错误出现,则执行对应错误类型的函数体;
- 无论有无报错,finally中的函数体一定会被执行;
- 捕获异常的顺序:先子类后父类;
- 为避免遗漏可能出现的异常,最后一次excpt结构增加BaseException;
X用来存储错误类型,用以输出;except BaseException as X: print(X)
- 语法结构:
- traceback模块;
- 用于打印异常信息;
- 语法结构;
import traceback try: 函数体 except 错误类型一: traceback.print_exc()
常见的异常类型
- ZerDivisionError:除(取模)零
- IndexError:索引错误
- KeyError:关键字错误
- NameError:未声明/初始化对象
- SyntaxError:语法错误
- ValueError:传入无效的参数