Java 异常的核心分类是三大类基于继承关系都继承自Throwable顶层父类划分同时也分为受检异常和非受检异常两种处理机制这是开发中最常用的划分方式。一、顶层父类Throwable所有异常和错误的根类只有它的子类才能被 JVM 识别为可抛出对象。两个直接子类Error错误Exception异常二、核心三大分类1. Error错误定义JVM 层面的严重系统错误程序无法处理、无法恢复。特点代码无需捕获/抛出捕获了也没用由 JVM 自动抛出一旦发生程序大概率崩溃。常见例子StackOverflowError栈溢出递归死循环OutOfMemoryError内存溢出OOMNoClassDefFoundError类找不到2. 运行时异常RuntimeException定义程序运行期间才会触发的逻辑错误属于非受检异常。特点代码不强制要求捕获/处理由代码逻辑问题导致空指针、数组越界等。常见例子NullPointerException空指针异常IndexOutOfBoundsException数组/集合越界IllegalArgumentException参数不合法ClassCastException类型转换异常3. 编译时异常受检异常 Checked Exception定义编译阶段就必须处理的异常属于受检异常。特点编译器强制要求捕获try-catch或声明抛出throws通常是外部环境问题文件、网络、数据库等。常见例子IOExceptionIO 流异常文件读写失败SQLException数据库操作异常FileNotFoundException文件找不到ClassNotFoundException类加载失败三、两种处理机制分类开发重点类型包含处理要求触发时机非受检异常Error 运行时异常不强制处理运行时受检异常除运行时外的所有 Exception编译器强制处理编译时四、完整继承关系图Throwable ├── Error错误JVM 崩溃级不处理 └── Exception异常程序可处理 ├── RuntimeException运行时异常非受检 │ ├── NullPointerException │ ├── IndexOutOfBoundsException │ └── ... └── 编译时异常受检异常 ├── IOException ├── SQLException └── ...总结Error系统崩了代码管不了运行时异常代码逻辑错了可处理可不处理编译时异常外部环境问题必须处理。
Java 异常分类
发布时间:2026/6/5 8:11:17
Java 异常的核心分类是三大类基于继承关系都继承自Throwable顶层父类划分同时也分为受检异常和非受检异常两种处理机制这是开发中最常用的划分方式。一、顶层父类Throwable所有异常和错误的根类只有它的子类才能被 JVM 识别为可抛出对象。两个直接子类Error错误Exception异常二、核心三大分类1. Error错误定义JVM 层面的严重系统错误程序无法处理、无法恢复。特点代码无需捕获/抛出捕获了也没用由 JVM 自动抛出一旦发生程序大概率崩溃。常见例子StackOverflowError栈溢出递归死循环OutOfMemoryError内存溢出OOMNoClassDefFoundError类找不到2. 运行时异常RuntimeException定义程序运行期间才会触发的逻辑错误属于非受检异常。特点代码不强制要求捕获/处理由代码逻辑问题导致空指针、数组越界等。常见例子NullPointerException空指针异常IndexOutOfBoundsException数组/集合越界IllegalArgumentException参数不合法ClassCastException类型转换异常3. 编译时异常受检异常 Checked Exception定义编译阶段就必须处理的异常属于受检异常。特点编译器强制要求捕获try-catch或声明抛出throws通常是外部环境问题文件、网络、数据库等。常见例子IOExceptionIO 流异常文件读写失败SQLException数据库操作异常FileNotFoundException文件找不到ClassNotFoundException类加载失败三、两种处理机制分类开发重点类型包含处理要求触发时机非受检异常Error 运行时异常不强制处理运行时受检异常除运行时外的所有 Exception编译器强制处理编译时四、完整继承关系图Throwable ├── Error错误JVM 崩溃级不处理 └── Exception异常程序可处理 ├── RuntimeException运行时异常非受检 │ ├── NullPointerException │ ├── IndexOutOfBoundsException │ └── ... └── 编译时异常受检异常 ├── IOException ├── SQLException └── ...总结Error系统崩了代码管不了运行时异常代码逻辑错了可处理可不处理编译时异常外部环境问题必须处理。