Exception 与 Error 的包和继承结构是什么?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
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 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。