java如何捕获异常
捕获异常的基本语法
在Java中,使用try-catch语句块捕获异常。基本结构如下:
try {
// 可能抛出异常的代码
} catch (ExceptionType e) {
// 处理异常的代码
}
捕获特定异常类型
可以针对不同类型的异常分别捕获,例如:
try {
// 可能抛出多种异常的代码
} catch (NullPointerException e) {
// 处理空指针异常
} catch (ArrayIndexOutOfBoundsException e) {
// 处理数组越界异常
}
捕获多个异常
Java 7及以上版本允许在一个catch块中捕获多个异常:

try {
// 可能抛出多种异常的代码
} catch (NullPointerException | ArrayIndexOutOfBoundsException e) {
// 处理空指针或数组越界异常
}
使用finally块
finally块中的代码无论是否发生异常都会执行:
try {
// 可能抛出异常的代码
} catch (Exception e) {
// 处理异常
} finally {
// 清理资源或执行必要操作
}
捕获并重新抛出异常
有时需要在捕获异常后重新抛出:

try {
// 可能抛出异常的代码
} catch (Exception e) {
// 记录日志或其他处理
throw e; // 重新抛出异常
}
自定义异常处理
可以定义自己的异常处理逻辑:
try {
// 业务逻辑
} catch (BusinessException e) {
// 自定义异常处理
log.error("业务异常发生", e);
sendAlert(e.getMessage());
}
异常链
在捕获异常后可以抛出新的异常并保留原始异常信息:
try {
// 可能抛出IOException的代码
} catch (IOException e) {
throw new MyException("处理文件时出错", e);
}
最佳实践
避免空的catch块,至少要记录异常信息。对于可恢复的异常进行适当处理,对于不可恢复的异常应该传播给调用者。合理使用检查型异常和非检查型异常。






