📖 知识点
多 except 语法
try:
风险代码
except 异常类型1:
处理1
except 异常类型2:
处理2
except:
# 兜底捕获,放最后,捕获其余未知异常(可选)
执行规则:
try 内代码运行,一旦抛出异常,从上到下依次匹配 except
只会进入第一个匹配成功的 except,匹配后其余 except 不再判断
兜底
except:必须写在所有指定异常的最后,不能放前面
示例:区分 ValueError 和 IndexError
try:
data = [10,20,30]
# num = int("abc")
print(data[9])
except ValueError:
print("值错误:类型转换失败")
except IndexError:
print("索引错误:下标超出列表范围")⚔️ Kata 实战任务
任务需求:
定义字典
goods = {"name":"笔记本","price":29}try 内部依次尝试两件事:
接收用户输入的 key,读取 goods 字典对应的 value
将读取到的值转为整数
写两个 except 分支:
捕获
KeyError:打印异常:该键不存在捕获
ValueError:打印异常:无法转为数字
可以测试两组输入:①
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
异常:该键不存在🧠 思考题
如果调换两个 except 顺序,会不会影响程序运行?
在多个 except 最后再加一个裸 except,它的作用是什么?