java如何处理异常
Java异常处理机制
Java通过try-catch-finally语句块处理异常,异常分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。检查型异常需强制处理,非检查型异常通常由程序逻辑错误引起。
基本语法结构
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e1) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e2) {
// 处理ExceptionType2类型的异常
} finally {
// 无论是否发生异常都会执行的代码
}
多异常捕获
Java 7+支持单catch块捕获多种异常类型:
try {
// 可能抛出多种异常的代码
} catch (IOException | SQLException e) {
// 处理IO或SQL异常
}
finally块的作用
finally块常用于释放资源(如关闭文件流、数据库连接),无论是否发生异常都会执行。但若try或catch中有return,finally会在return前执行。

抛出异常
通过throw主动抛出异常:
if (input < 0) {
throw new IllegalArgumentException("输入不能为负数");
}
声明异常
方法可通过throws声明可能抛出的异常,调用者需处理:

public void readFile() throws IOException {
// 可能抛出IO异常的代码
}
自定义异常
继承Exception或RuntimeException创建自定义异常:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
异常处理最佳实践
- 避免空的catch块,至少记录异常信息
- 优先捕获具体异常而非通用的
Exception - 使用try-with-resources管理资源(Java 7+)
- 合理使用异常链传递原始异常信息
try-with-resources语法
自动关闭实现AutoCloseable接口的资源:
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
// 使用资源
} catch (IOException e) {
// 处理异常
}






