异常
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
常见异常
NameError
名称异常:变量末定义
TypeError
类型异常:不同类型数据运算导至的异常
IndexError
索引异常:超出索引范围
AttribudeError
对象没有对应名称的异常
KeyError
没有对应名称的键
NotImplementedError
尚末实现的方法
Exception
异常基类
异常处理
1、捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try....except...else的语法:
try:<语句> #运行别的代码except <名字>:<语句> #如果在try部份引发了'name'异常except <名字>,<数据>:<语句> #如果引发了'name'异常,获得附加的数据else:<语句> #如果没有异常发生
Try:
可能发生异常的语句
Except:错误类型1[as 变量1]
处理语句1
Except:错误类型2[as 变量2]
处理语句2
except Exception:[as 变量3]
不是以上错误类型的语句
Else:
末发生异常的语句
Finally:
无论是否发生异常的语句
2、作用:将程序由异常状态变为正常流程
说明:
as语句用于绑定错误对象变量,可以省略
except语句可以有一个也可以有多个用来捕获错的类型
else语句最多有一个
finally语句最多有一个
实例:输入人数分给定的苹果,计算每人分几个。
def div_apple(apple_count):
person=int(input("输入人数:"))
result=apple_count/person
return result
'''
app=div_apple(10)
print(app)
print("后续逻辑……")
输入为空:ValueError值错误
输入的不是数字:ValueError值错误
输入为0:ZeroDivisionError
异常处理
'''
'''
try:
#放可能出错的代码
app = div_apple(10)
except Exception:
print("出错!!")
'''
'''
#针对不同的错误进行处理
try:
#放可能出错的代码
app = div_apple(10)
except ValueError:
print("输入人数有误")
except ZeroDivisionError:
print("人数不能为0")
except Exception:#Exception为所有错误的基类
print("未知错误")
print("后续逻辑……")
'''
'''
try:
#放可能出错的代码
app = div_apple(10)
except Exception:#Exception为所有错误的基类
print("错误")
else:
print("没有出错")#如果异常不执行else语句
print("后续逻辑……")
'''
try:
#放可能出错的代码
app = div_apple(10)
finally:
#不论是否异常一定会执行的代码
print("finally")
#不能处理的错误,但是有一定能执行的代码就定义在ginally语句中
print("后续逻辑……")