写程序的时候不可能是一帆风顺的,经常会出现一些异常的情况,例如我们准备要出门看一场电影,首先是出门,然后步行到电影院,之后看完电影去逛街,逛完街步行返回家中,但是当我们看完电影之后发现外面在下雨,这时候我们就要取消后面逛街的计划返回家中,这里的下雨就是异常情况,所以我们在程序设计的时候应当添加这种处理异常的方案。
下面我们先看一个异常问题,代码如下:
12345 | number = int ( input ( '请输入一个数字:' )) if 15 / number > = 3 : print ( 'ok' ) else : print ( 'wrong' ) |
输出结果:
123456789 | 请输入一个数字: 3 ok 请输入一个数字: 15 wrong 请输入一个数字: 0 Traceback (most recent call last): File "C:/Users/test.py" , line 2 , in
if 15 / number > = 3 : ZeroDivisionError: division by zero |
当我们输入的分母为0的时候,我们会发现程序报错了,这说明我们写的程序有问题,由于我们没有考虑到分母为0的时候该怎么处理,因此程序出现了异常,所以我们写程序的时候需要考虑到一些会出现的异常情况,下面我们来学习几种常见的异常情况。
1. KeyError异常
这个是访问字典的键,而键值不存在的时候发生的异常。
代码如下:
12 | my_dict = { 'dotcpp' : 123 } print (my_dict[ 'dot' ]) |
异常如下:
1234 | Traceback (most recent call last): File "C:/Users/test.py" , line 2 , in
print (my_dict[ 'dot' ]) KeyError: 'dot' |
2. IndexError异常
这种异常在我们学习Python的时候比较常见,当我们访问序列元素的时候,索引值超出范围的时候会触发这种异常机制,代码如下:
12 | my_list = [ 1 , 2 , 3 , 4 , 5 ] print (my_list[ 100 ]) |
异常如下:
1234 | Traceback (most recent call last): File "C:/Users/test.py" , line 2 , in
print (my_list[ 100 ]) IndexError: list index out of range |
我们的列表中只存在5个元素,访问超出限制就会引发这种异常。
3. NameError异常
当我们使用一个未定义的变量时会引发此异常,代码如下:
123 | name = [ 'www.dotcpp,com' ] print ( '存在的变量name:' ,name) print ( '不存在的变量dotcpp:' ,dotcpp) |
异常如下:
12345 | 存在的变量name: [ 'www.dotcpp,com' ] Traceback (most recent call last): File "C:/Users/轻烟/PycharmProjects/untitled1/teach/test.py" , line 3 , in
print ( '不存在的变量dotcpp:' ,dotcpp) NameError: name 'dotcpp' is not defined |
4. TypeError异常
这种异常出现于传递的数据与规定的类型不一致的时候,例如当我们要使用两个整数相加减,这个时候其中一个使用了字符串类型,那么就会引发这种错误。
代码如下:
123 | a = 10 b = 'dotcpp' print (a + b) |
异常如下:
1234 | Traceback (most recent call last): File "C:/Users/test.py" , line 3 , in
print (a + b) TypeError: unsupported operand type (s) for + : 'int' and 'str' |
5. 总结
上面是几种最常见的异常,我们在学习的过程中可能会遇到ValueError、OSError、AttributeError等多种异常,我们在遇到不认识的异常的时候可以通过帮助文档去查询相关内容。