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

Java 常见异常有哪些?怎样分类?

查看完整题解

参考回答

直接回答

先区分受检异常、RuntimeException 及其子类,以及 Error。常见受检异常有 IOException、ClassNotFoundException;常见运行时异常有 NullPointerException、IllegalArgumentException、IndexOutOfBoundsException、NumberFormatException、ClassCastException 等。Error 通常单独讨论,例如 OutOfMemoryError。

讲清原理

分类的目的不只是背名字,而是帮助选择处理位置。文件读取失败可能需要重试或提示文件不可用;参数不合法通常应在明确的接口边界报告;内存耗尽则不宜当普通业务分支吞掉。

异常类之间也有继承关系。例如 NumberFormatException 是 IllegalArgumentException 的子类,ArrayIndexOutOfBoundsException 是 IndexOutOfBoundsException 的子类。捕获多个异常时,子类型应放在父类型之前,否则可能出现不可达的 catch 分支。

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

例子与易错点

try {
    Integer.parseInt("abc");
} catch (NumberFormatException e) {
    System.out.println("请输入整数");
}

不要为“避免报错”而在所有地方 catch Exception 后返回默认成功值。正确做法是让错误与正常结果在接口上可以区分,并保留必要的原因信息。

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

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

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