什么是Java异常处理
Java 异常处理(Exception Handling) 是 Java 提供的一种机制,用来捕获、处理程序运行过程中出现的错误或异常情况,防止程序直接崩溃,提高程序的健壮性和可维护性。
一、为什么需要异常处理?
在程序运行中,可能会出现各种问题,例如:
- 除零错误
- 空指针访问
- 文件不存在
- 网络中断
- 输入格式错误
如果不处理这些异常,程序会直接终止。
异常处理的目的:
✅ 让程序继续运行或优雅地退出
✅ 给出错误提示
✅ 方便定位问题
✅ 提高代码可读性和可维护性
二、Java 异常体系结构
Java 中,所有异常和错误都继承自 java.lang.Throwable:
Throwable
├── Error(严重错误,一般不处理)
│ ├── OutOfMemoryError
│ └── StackOverflowError
│
└── Exception(异常,需要处理的)
├── RuntimeException(运行时异常)
│ ├── NullPointerException
│ ├── ArrayIndexOutOfBoundsException
│ └── ArithmeticException
│
└── 非 RuntimeException(受检异常,必须处理)
├── IOException
├── SQLException
└── FileNotFoundException
常见分类
| 类型 | 说明 | 是否必须处理 |
|---|---|---|
| Error | JVM 错误,程序无法恢复 | 否 |
| RuntimeException | 运行时异常 | 否 |
| 受检异常(Checked Exception) | 编译期要求处理 | 是 |
三、异常处理的核心关键字
Java 使用五个关键字处理异常:
1️⃣ try
用于包裹可能抛出异常的代码
try {
int a = 10 / 0;
}
2️⃣ catch
用于捕获并处理异常
catch (ArithmeticException e) {
System.out.println("除零错误");
}
✅ 可以多个 catch
✅ 捕获范围小的异常放前面
3️⃣ finally
无论是否发生异常都会执行(常用于释放资源)
finally {
System.out.println("一定会执行");
}
4️⃣ throw
手动抛出一个异常
throw new RuntimeException("出错了");
5️⃣ throws
声明方法可能抛出的异常
public void test() throws IOException {
}
四、基本语法示例
示例 1:捕获异常
public class Test {
public static void main(String[] args) {
try {
int a = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("算术异常:" + e.getMessage());
} finally {
System.out.println("程序结束");
}
}
}
输出:
算术异常:/ by zero
程序结束
示例 2:受检异常
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("a.txt");
}
}
五、异常对象的常用方法
catch (Exception e) {
e.getMessage(); // 获取异常信息
e.printStackTrace(); // 打印异常堆栈
}
六、自定义异常
示例:自定义异常类
class AgeException extends Exception {
public AgeException(String msg) {
super(msg);
}
}
使用:
if (age < 0) {
throw new AgeException("年龄不能为负数");
}
七、异常处理的最佳实践 ✅
✅ 不要吞掉异常(空 catch)
✅ 捕获具体异常,而不是 Exception
✅ 资源使用 try-with-resources
✅ 异常信息要清晰
✅ 不要用来控制正常业务逻辑
try-with-resources(推荐)
try (FileReader fr = new FileReader("a.txt")) {
// 使用资源
} catch (IOException e) {
e.printStackTrace();
}
八、总结一句话
Java 异常处理是一种用于捕获和处理程序运行时错误的机制,通过 try、catch、finally、throw 和 throws 保证程序稳定、可控地运行。
如果你愿意,我也可以:
- 用 通俗比喻讲异常
- 对比 异常 vs 错误
- 讲 面试常考异常题
- 结合 真实项目示例