Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Exception 与 Error 的包和继承结构是什么?

查看完整题解

参考回答

直接回答

Throwable、Exception、RuntimeException 和 Error 都在 java.lang 包中。Throwable 的两大直接子类是 Exception 与 Error,RuntimeException 又属于 Exception。具体异常分布在不同包里,例如 IOException 在 java.io,SQLException 在 java.sql;不存在一个包容纳所有异常类。

讲清原理

“在什么包里”和“继承谁”是两条不同的信息。包用于组织命名,继承关系决定类型兼容性。分类受检与非受检异常时,看的是继承关系,而不是包名是否带 io、sql 或 lang。

RuntimeException 及其子类、Error 及其子类属于非受检异常。其余 Throwable 子类通常属于受检范围;实际代码中常见的受检异常大多继承 Exception。不要把“Exception 类”与“受检异常集合”完全画成同一个框。

异常体系:继承关系决定异常类别
异常体系:继承关系决定异常类别

例子与易错点

NullPointerException 继承 RuntimeException,最终仍属于 Exception;OutOfMemoryError 属于 Error;IOException 属于受检异常。捕获 Exception 不会连同所有 Error 一起捕获,捕获 Throwable 才覆盖更宽范围,但处理策略也必须更谨慎。

相关题:第 1 题、第 9 题、第 50 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。