从 Throwable 家族树出发,讲清受检异常与非受检异常的语义边界,以及为什么 Error 不该被捕获;深入 JVM 层面拆解异常传播、fillInStackTrace 的栈轨迹开销与优化手段;用字节码 Exception Table 与 finally 代码复制机制解释 try-catch-finally 的真实执行顺序;完整剖析 try-with-resources 的编译产物、逆序关闭与 suppressed 抑制机制;最后给出自定义异常设计规范、十余条最佳实践与高频面试题清单。