全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-08 5 分钟 ✍️ juanwangdev

异常的概念与分类

Java异常机制用于处理程序运行时的错误情况。

异常概念

什么是异常

异常是程序运行过程中发生的错误事件,打断正常的执行流程。

Java
// 正常情况
int result = 10 / 2;  // 结果为5

// 异常情况
int result = 10 / 0;  // 抛出ArithmeticException

异常的作用

  • 分离正常代码与错误处理代码
  • 防止程序意外终止
  • 提供错误信息便于调试

异常分类体系

Throwable顶层类

Java异常体系以Throwable为顶层父类。

Java
Throwable
  ├── Error(错误)
  └── Exception(异常)
        ├── RuntimeException(非检查型)
        └── 其他Exception(检查型)

Error错误

Error表示严重问题,程序无法处理。

Java
// OutOfMemoryError - 内存不足
// StackOverflowError - 栈溢出(无限递归)

public void recursion() {
    recursion();  // 无限递归导致StackOverflowError
}

// Error通常不捕获,程序终止

Error属于JVM级别问题,程序无法恢复,不建议捕获处理。

Exception异常

Exception表示程序可以处理的错误。

检查型异常(Checked Exception) 编译时强制检查,必须处理。

Java
// IOException、SQLException、ClassNotFoundException

// 编译时强制要求处理
public void readFile() throws IOException {
    FileReader reader = new FileReader("file.txt");
}

非检查型异常(Unchecked Exception) RuntimeException及其子类,编译时不强制处理。

text
// NullPointerException、ArithmeticException
// ArrayIndexOutOfBoundsException、ClassCastException

// 编译不强制处理,但运行时会抛出
String str = null;
str.length();  // NullPointerException

常见异常类型

RuntimeException子类

异常类说明示例
NullPointerException空指针异常调用null对象方法
ArithmeticException算术异常除数为零
ArrayIndexOutOfBoundsException数组越界访问不存在的索引
ClassCastException类型转换异常错误类型转换
NumberFormatException数字格式异常字符串转数字失败
IllegalArgumentException非法参数异常参数不合法

检查型异常

异常类说明
IOExceptionIO操作异常
FileNotFoundException文件不存在
SQLException数据库操作异常
ClassNotFoundException类找不到
InterruptedException线程中断

检查型与非检查型对比

特性检查型异常非检查型异常
编译时检查强制处理不强制
继承关系Exception(非Runtime)RuntimeException
代表问题外部资源问题程序逻辑错误
处理方式try-catch或throws可选处理
示例IOExceptionNullPointerException

异常处理原则

何时使用检查型异常

  • 外部资源不可控情况(文件、网络、数据库)
  • 调用者必须知道并处理的情况

何时使用非检查型异常

  • 程序逻辑错误(参数校验、空指针)
  • 调用者无法恢复的情况

要点总结

  • 异常是程序运行时的错误事件
  • Throwable是异常体系顶层类
  • Error是严重错误,程序无法处理
  • Exception是可处理的异常
  • 检查型异常编译时强制处理(IOException等)
  • 非检查型异常编译不强制处理(RuntimeException子类)
  • 检查型异常代表外部资源问题
  • 非检查型异常代表程序逻辑错误

📝 发现内容有误?点击此处直接编辑

← 上一篇 try-catch-finally语句
下一篇 → 异常链与多重捕获
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库