📖 知识点
指定异常捕获语法
try:
# 风险代码
except 异常类型:
# 只捕获这一类异常,其他异常不会被拦截原理:
只有当
try中抛出的异常和写的异常类型匹配,才会进入 except如果抛出别的类型异常,不会被捕获,程序依旧崩溃
回顾三大异常:
ValueError值错误,类型转换失败IndexError列表索引越界KeyError字典找不到 key
示例:只捕获 ValueError
try:
num = int("abc")
except ValueError:
print("捕获:数值转换失败(ValueError)")如果发生别的错误,不会捕获:
try:
lst = [1,2,3]
print(lst[10])
except ValueError:
print("捕获数值转换错误")这段代码触发 IndexError,不是 ValueError,不会进入 except,程序直接报错终止。
⚔️ Kata 实战任务
任务需求:
使用
try ... except 异常类型编写代码字典
student = {"name":"小明", "score":90}try 块中尝试读取
student["age"]except 只捕获
KeyError,捕获后打印:捕获异常:找不到这个键!最后打印:
代码执行完毕
参考代码
student = {"name":"小明", "score":90}
try:
print(student["age"])
except KeyError:
print("捕获异常:找不到这个键!")
print("代码执行完毕")运行输出:
捕获异常:找不到这个键!
代码执行完毕🧠 思考题
上面代码如果把
student["age"]改成int("hello"),会进入 except 分支吗?为什么?对比:
except:和except KeyError:两种写法,各自优缺点是什么?
行者孙Python