📖 知识点
语法:except 异常类型 as e
try:
# 风险代码
except 异常类型 as e:
# e 就是异常对象,print(e) 可以拿到异常描述文本
as是关键字,e是变量名(你也可以写err、msg,习惯简写 e)作用:把捕获到的异常实例赋值给变量,读取里面自带的错误信息
可以搭配多 except 分支,不同异常单独获取信息
基础示例
try:
num = int("hello")
except ValueError as e:
print("捕获到异常,详情:", e)
输出:
捕获到异常,详情: invalid literal for int() with base 10: 'hello'
多异常搭配 as e:
lst = [1,2,3]
try:
print(lst[9])
except IndexError as e:
print("索引异常详情:", e)
💡 重点:
raise手动抛出异常写的提示文字,也可以通过as e获取!
try:
raise ValueError("分数超出0~100范围")
except ValueError as e:
print(e) # 直接拿到我们自定义的提示
⚔️ Kata 实战任务
任务需求:
字典
product = {"name":"键盘", "price":79}try 中接收用户输入 key,读取字典 value,并转为整数
两个 except 分支,都使用
as e捕获异常信息KeyError:打印
找不到键,异常详情:{e}ValueError:打印
转换失败,异常详情:{e}
测试输入:
name和stock
参考代码
product = {"name":"键盘", "price":79}
try:
key = input("请输入查询的key:")
val = product[key]
num = int(val)
print(f"转换成功,数字={num}")
except KeyError as e:
print(f"找不到键,异常详情:{e}")
except ValueError as e:
print(f"转换失败,异常详情:{e}")
测试示例 1:输入name
请输入查询的key:name
转换失败,异常详情: invalid literal for int() with base 10: '键盘'
测试示例 2:输入stock
请输入查询的key:stock
找不到键,异常详情: 'stock'
🧠 思考题
except ValueError as err:,变量名写成 err 可以吗?变量名有强制规定吗?在生产程序中,拿到 e 之后除了 print,还有什么用途?
行者孙Python