异常 exception(基础)
代码结果需自行验证
什么是错误?
错误是由于逻辑或语法等到安置程序无法正常执行的问题
特点:
无法预知
什么是异常
异常是程序出错时标识的一种状态,程序不再执行,转去调用此函数的地方等处理并恢复为正常状态
作用:
用作信号通知,通知上层调用者有错误产生需要处理
程序有两种状态:
正常/异常
异常处理的语句:
try 语句的两种用法:
try-except语句
try-finally语句
try-except语句:*
try:
可能触发异常的语句
except 错误类型1 [as 变量1]:
异常处理语句1
except 错误类型2[ as 变量2]:
异常处理语句2
except: #俗称万能异常,放到最后
异常处理语句3
...
else:
未发生异常的语句
finally:
最终语句
作用:
尝试捕获错误得到异常通知,将程序异常状态转换正常状态继续执行
说明:
as 子句 绑定错误对象
else 绑定未发生错误是执行子句
except 捕获异常
finally
示例1:
def apple(n):
print('%d苹果分给几个人'% n)
s = input(‘请输入人数:’)
count = int(s) #在此输入a 使其发生错误
result = n / count
print('人均:',result)
try: #异常处理
apple(10)
print('正常结果')
except ValueError as err:
# err错误原因对象
print('异常处理结果')
print('错误起因',err)
print('程序正常结束')
示例2:
def get_scorce():
try:
s = int(input('输入成绩:'))
except ValueError:
print('程序在此处发生值错误')
return 0
if 0<s<100:
print('程序正常执行')
return s
return 0
print('输入的成绩:',get_scorce())
finally语句:
异常最终语句,异常是否处理都将执行子句。
try finally 语句
语法
try:
可能触发的异常语句
finally:
最终语句
说明:
finally子句不可以省略
不存在except子句
作用:
通常作为异常处理时必须要处理的事情,无论异常是否
发生不改变程序状态
示例:
def egg():
print('打开天燃气')
try:
count = int(input('煎蛋多少个:'))
print('煎蛋',count,'个')
finally:
print('关闭天燃气')
try:
egg()
except ValueError as err:
print('值错误程序返回正常状态,错误类型:',err)
raise 语句
作用:
触发错误,进入异常并发送错误通知
语法:
raise 异常类型
Or
raaise 异常类型
Or
raise 重新触发上一次错误
示例1:
def make_except():
print('开始')
#下面触发异常
raise ValueError
#上面是异常
print('结束')
try:
make_except()
except ValueError:
print('在此捕获触发的错误')
print('程序结束!')
示例2:
def make_except():
print('开始')
#下面触发异常
e = ValueError('故意发送的错误')
raise e
#上面是异常
print('结束')
try:
make_except()
except ValueError as err:
print('在此捕获触发的错误')
print('在此获取错误',err)
print('程序结束!')
# 触发的错误,需要和except接受的一致
# 错误类型 和错误对象 要一致
示例3:
def f1(x):
print(x)
e = ValueError(str(x)'F1错误在此')
raise e
def f2(x,y):
try:
f1(x)
except ValueError as err:
print('在此捕获F1错误',err)
raise
print(x,y)
try:
f2(0,100)
except ValueError as err:
print('在此捕获F2错误',err)
示例4:
def get_age():
age = int(input('1-140:'))
if age<1 or age > 140:
raise ValueError('输入不一致:')
return age
try:
age = get_age()
print('输入的年龄是:',age)
except ValueError as err:
print(err,'获取用户失败')
assert 语句(断言语句)
语法:
assert 真值表达式,错误数据(通常是字符串)
作用:
当真值表达式为false时,用错误数据创建一个AssertError进入异常状态,故意制造错误。
等同于:
if bool(真值表达式) == false:
false AssertError(错误数据)
示例:
def get_aource():
s = int(input('输入成绩:'))
assert 0<=s<=100,'成绩超出范围'
return s
source = get_aource()
print('学生成绩:',source)
异常中的小结:
try - except 语句
用于捕获接收异常
trt - finally 语句
用于执行任何状态都必须执行
raise 语句
触发错误,进入异常
aassert 语句
根据条件触发 AssertError 异常通知
Python3中全部错误类型