1. 程序里的bug
一切影响程序执行或影响程序结果的都可以被视为bug
1、直接的语法错误:编程语法错误直接导致的程序终止(例如:使用中文括弧,命令拼写错误)
2、由数据导致的程序终止(例如:列表取值,修改元组,数据类型)
程序的结果错误:没有任何语法错误,但是结果未达到预期
编程中/程序中报错是一种福利,不报错的bug往往是最麻烦的。
2. 常见的基础语法错误
最常见,没有之一的"非法"字符错误
数据类型操作错误(非同类项操作)
语法直接错误,特别注意。这个报错的行号不一定是错误的行
属性问题,这个就说明但钱对象无该属性
调用的变量/类/模块为声明
语法错误,程序的结尾报错(程序认为你还缺少结尾的东西)
语法没错,但是数据出错
强行修改一个不可以改变的对象
3. 如何拦截bug - 你就try一下
try:
a = input(“请输入第一个数字:”)
b = input(“请输入第二个数字:”)
c = int(a) + int(b)
print©
except:
print(“输入的数据有问题,请重试”)
---------------------------------------------------
try - 试一下这个代码行不行,如果行那就执行了
except - 如果你try了不行, 那就给我来处理
特别注意:
一般不用try … except … 处理基础语法问题,通常基础语法问题已经在这之前解决了
try … except …异常捕获通常是你/程序无法控制的部分
try … except …不会捕获全部基础语法错误 SyntaxError: invalid syntax
try:
#正常执行的程序-主体
except a:#可选
#第一种问题处理-主体
except b:#可选
#第二种问题处理-主体
else:#可选 必须在except后
#如果正常执行 即try执行了,则执行else主体
finally:#可选在最后
#以上无论什么情况(成功/失败)都会执行
#注意try不能单独存在至少存在一个except或finally
try … except …获取异常信息
try … except …捕获指定异常
try可以嵌套使用
常见指定异常捕获表:
1、AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
2、NameError:试图访问的变量名不存在
3、SyntaxError:语法错误,代码形式错误
4、Exception:所有异常的基类,python异常类都是基类Exception的其中一员,异常都是从基类输出
5、IOError:使用了映射种不存在的关键字(键)时引发的关键字错误
6、KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误
7、IndexError:索引错误,使用的索引不存在,常索引超出序列范围
8、TypeError:类型错误,内建操作或是函数应用在了错误类型的对象时会引发类型错误
9、ZeroDivisonError:除数为0,在除数操作时,第二个参数为0时引发了该错误
10、ValueError:值错误,传给对象的参数类型不正确,像是给int()函数传入了字符串数据类型的参数
如何处理非“bug”的bug - 单元测试
单元测试基本流程
unittest断言参考表