6. raise语句
异常的作用:
用作信号通知,通知上层调用者有错误产生需要处理。
接收异常通知的语句
- try-except语句。
- try-except*语句。
发出异常通知的语句
- raise语句。
- assert语句。
作用
用于手动引发异常。发送错误通知给调用者。
做法
将一个错误对象放入系统中,让程序进入异常状态。
语法
raise 异常对象
# 或
raise 异常类型
# 或
raise # 重新引发当前处理的异常
示例
# raise语句示例
def get_score():
'''
此函数返回用户输入的成绩,正常成绩在0~100范围,
其他值触发ValueError类型的异常通知
'''
score = int(input("请输入您的成绩: "))
if score < 0:
err_obj = ValueError(f'成绩{score}是负数!')
raise err_obj
if score > 100:
raise ValueError
return score
try:
score = get_score()
print("学生的成绩是:", score)
except ValueError as err:
print('成绩录入有错! err:', err)
raise
上述程序中,当用户输入的数字小于零时,会引发 ValueError 类型的错误,并让程序进入异常处理流程。
当用户输入的数字大于 100 是,会用 没有参数的 ValueError() 构造函数创建一个错误对象,并让程序进入异常处理流程。
在 except ValueError as err: 子句中的 raise 语句是处理完 get_score() 函数内部的错误后,又将err绑定的错误再向上传递,并重新进入异常处理流程。
练习
写一个函数 get_age() 用来获取一个人的年龄信息,此函数规则用户只能输入1~140之间的整数,如果用户输入其它的数则直接引发ValueError类型的错误!
def get_age():
... # 完成此处的代码
try:
age = get_age()
print("用户输入的年龄是:", age)
except ValueError as err:
print("用户输入的不是1~140的整数,获取年龄失败!")