Java 基础:异常体系与 Error/Exception
Throwable 体系,受检与非受检异常,try-with-resources,以及异常处理的性能与设计。
本节你将能
理清异常继承体系,区分 Error 与 Exception,写出规范的异常处理。
核心要点
- Throwable 分 Error(JVM 严重错误,不该捕获)与 Exception(可处理)。
- Exception 分受检(编译期强制 try/catch 或 throws)与非受检(RuntimeException,如 NPE)。
- try-with-resources 自动关闭实现 AutoCloseable 的资源,避免泄露。
- 异常开销大:栈轨迹快照成本高,热路径不要用异常做控制流。
- finally 在 return 前执行,但 finally 的 return 会覆盖 try 的返回值。
面试连招
常被追问:NoClassDefFoundError 与 ClassNotFoundException 区别?finally 与 return 顺序?
常见坑
吞掉异常(空 catch);用异常做正常流程控制;在 finally 中 return。