行者孙Python

御险篇-Day49 主动抛出异常 raise

📖 知识点

raise 基础语法

 

raise 异常类型("异常提示文字")

 

核心要点:

  1. 之前:代码出错 → Python 自动抛出异常

  2. raise:我们自己判断条件,手动制造异常

  3. 抛出的异常,同样可以用 try-except 捕获

  4. 常用异常:ValueError、IndexError、KeyError

基础示例

 

age = int(input("输入年龄:"))
if age < 0:
    raise ValueError("年龄不能是负数!")
print(f"你的年龄是:{age}")

 

输入-5,程序直接抛出异常:

 

ValueError: 年龄不能是负数!

 

搭配 try-except 捕获自己抛出的异常

 

try:
    score = int(input("输入分数:"))
    if score <0 or score>100:
        raise ValueError("分数必须在0~100之间!")
except ValueError as err:
    print("捕获异常:", err)

 

⚔️ Kata 实战任务

任务需求:

  1. 定义函数 check_score(score)

  2. 在函数内做判断:

    • 如果分数 <0 或者>100:使用 raise 抛出 ValueError,提示文字:分数必须介于0到100之间

    • 合法分数:打印分数校验通过

  3. 使用 try-except 调用函数

  4. 测试两组:105 和 88

参考代码

 

def check_score(score):
    if score < 0 or score > 100:
        raise ValueError("分数必须介于0到100之间")
    print("分数校验通过")

try:
    check_score(105)
except ValueError as e:
    print("捕获异常:", e)

try:
    check_score(88)
except ValueError as e:
    print("捕获异常:", e)

 

运行输出:

捕获异常: 分数必须介于0到100之间
分数校验通过

 

🧠 思考题

  1. 什么时候适合用 raise 主动抛出异常,而不是简单 print 打印提示?

  2. raise 抛出的异常,如果外面没有 try-except 捕获,会发生什么?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我