御险篇-Day48 finally 分支:无论是否报错,一定执行

0 次阅读 2026-10-19 15:54

📖 知识点

try-except-else-finally 完整语法

try:
    # 风险代码
except 异常类型:
    # 出错执行
else:
    # 无异常才执行
finally:
    # ✅ 无论是否报错,这里必定执行

 

执行流程

  1. try 无异常 → try → else → finally

  2. try 捕获异常 → try → except → finally

  3. try 出现未捕获异常 → 抛出错误前,依然会先执行 finally

⚠️ 重点:哪怕代码里面写了return,finally 依旧会优先执行!

基础示例

try:
    num = int(input("输入数字:"))
except ValueError:
    print("输入不是数字!")
else:
    print(f"你输入的数字是:{num}")
finally:
    print("=== 程序收尾,这段永远执行 ===")

⚔️ Kata 实战任务

任务需求:

  1. 字典 book = {"name":"Python入门","price":59}

  2. try:接收用户输入 key,读取字典的值

  3. except 捕获 KeyError,打印:异常:找不到该键

  4. else:打印查询成功,对应值:xxx

  5. finally:固定打印 >>> 本次查询操作结束

  6. 测试两组输入:name、author

参考代码

book = {"name":"Python入门","price":59}
try:
    key = input("请输入要查询的key:")
    value = book[key]
except KeyError:
    print("异常:找不到该键")
else:
    print(f"查询成功,对应值:{value}")
finally:
    print(">>> 本次查询操作结束")

测试示例 1:输入name

请输入要查询的key:name
查询成功,对应值:Python入门
>>> 本次查询操作结束

测试示例 2:输入author

请输入要查询的key:author
异常:找不到该键
>>> 本次查询操作结束

🧠 思考题

  1. finally 适合用来做什么场景?举一个生活 / 代码例子。

  2. 如果 try 内部执行return提前退出函数,finally 还会执行吗?