6. raise语句

异常的作用:

用作信号通知,通知上层调用者有错误产生需要处理。

接收异常通知的语句

  1. try-except语句。
  2. try-except*语句。

发出异常通知的语句

  1. raise语句。
  2. 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的整数,获取年龄失败!")