行者孙Python

御险篇-Day46 多个 except 分支,分别捕获不同错误

📖 知识点

多 except 语法

try:
    风险代码
except 异常类型1:
    处理1
except 异常类型2:
    处理2
except:
    # 兜底捕获,放最后,捕获其余未知异常(可选)

 

执行规则:

  1. try 内代码运行,一旦抛出异常,从上到下依次匹配 except

  2. 只会进入第一个匹配成功的 except,匹配后其余 except 不再判断

  3. 兜底except:必须写在所有指定异常的最后,不能放前面

示例:区分 ValueError 和 IndexError

try:
    data = [10,20,30]
    # num = int("abc")
    print(data[9])
except ValueError:
    print("值错误:类型转换失败")
except IndexError:
    print("索引错误:下标超出列表范围")

⚔️ Kata 实战任务

任务需求:

  1. 定义字典 goods = {"name":"笔记本","price":29}

  2. try 内部依次尝试两件事:

    • 接收用户输入的 key,读取 goods 字典对应的 value

    • 将读取到的值转为整数

  3. 写两个 except 分支:

    • 捕获KeyError:打印 异常:该键不存在

    • 捕获ValueError:打印 异常:无法转为数字

  4. 可以测试两组输入:①name ②count

参考代码

goods = {"name":"笔记本","price":29}
try:
    key = input("请输入要查询的key:")
    val = goods[key]
    num = int(val)
    print(f"转换成功,数字是:{num}")
except KeyError:
    print("异常:该键不存在")
except ValueError:
    print("异常:无法转为数字")

测试示例 1:输入 name

请输入要查询的key:name
异常:无法转为数字

测试示例 2:输入 count

请输入要查询的key:count
异常:该键不存在

🧠 思考题

  1. 如果调换两个 except 顺序,会不会影响程序运行?

  2. 在多个 except 最后再加一个裸 except,它的作用是什么?

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