MiniPlasma 漏洞机理、野区攻击特征与全链路检测防御技术研究
2026/6/5 19:14:05
Java 异常的核心分类是三大类,基于继承关系(都继承自Throwable顶层父类)划分,同时也分为受检异常和非受检异常两种处理机制,这是开发中最常用的划分方式。
所有异常和错误的根类,只有它的子类才能被 JVM 识别为可抛出对象。
两个直接子类:
StackOverflowError:栈溢出(递归死循环)OutOfMemoryError:内存溢出(OOM)NoClassDefFoundError:类找不到NullPointerException:空指针异常IndexOutOfBoundsException:数组/集合越界IllegalArgumentException:参数不合法ClassCastException:类型转换异常IOException:IO 流异常(文件读写失败)SQLException:数据库操作异常FileNotFoundException:文件找不到ClassNotFoundException:类加载失败| 类型 | 包含 | 处理要求 | 触发时机 |
|---|---|---|---|
| 非受检异常 | Error + 运行时异常 | 不强制处理 | 运行时 |
| 受检异常 | 除运行时外的所有 Exception | 编译器强制处理 | 编译时 |
Throwable ├── Error(错误,JVM 崩溃级,不处理) └── Exception(异常,程序可处理) ├── RuntimeException(运行时异常,非受检) │ ├── NullPointerException │ ├── IndexOutOfBoundsException │ └── ... └── 编译时异常(受检异常) ├── IOException ├── SQLException └── ...