14.错误和异常(二)
目录
1. 冒泡
2. 异常链
3. else 和 finally
4. 创建异常
4.1 自定义创建异常的标准:
4.2 自定义异常
4.2.1 最小语法:一行就够
4.2.2 加字段:让异常携带“病历”
4.2.3 分层体系:精准捕获的秘诀
4.3 命名 & 文档 最佳实践
4.4 实战模板
5. 异常一览
1. 冒泡
异常冒泡是一个形象化的说法,它表示异常被抛出后沿调用栈自动上浮,直到被 except
捕获或程序终止。一句话:“异常不会原地爆炸,它会一层层往上找救兵。”
冒泡路线图
函数 C 抛出异常
↓ 没找到 except,继续上浮
函数 B 抛出异常
↓ 没找到 except,继续上浮
函数 A 抛出异常
↓ 找到 except → 处理
最小演示
def level3():raise ValueError("底层炸弹")def level2():level3()def level1():level2()try:level1()
except ValueError as e:print("顶层接到炸弹:", e)
-
中途任何一层都可以
except
拦截; -
如果 全程无人捕获,解释器打印完整 traceback 后退出;
-
使用
raise ... from e
可在冒泡时 带上