当前位置:首页 > Java

java 如何处理异常

2026-04-09 07:56:51Java

异常处理的基本概念

在 Java 中,异常是程序运行时发生的意外事件,可能破坏正常流程。Java 通过 try-catchthrowthrowsfinally 等机制处理异常,确保程序健壮性。

使用 try-catch 块

try-catch 是处理异常的核心结构。将可能抛出异常的代码放在 try 块中,异常捕获逻辑放在 catch 块中。

try {
    int result = 10 / 0; // 抛出 ArithmeticException
} catch (ArithmeticException e) {
    System.out.println("除零错误: " + e.getMessage());
}

多重 catch 块

可以捕获多种异常,按顺序匹配。需注意子类异常应排在父类之前。

try {
    int[] arr = new int[5];
    arr[10] = 1; // 抛出 ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("数组越界: " + e.getMessage());
} catch (Exception e) {
    System.out.println("通用异常: " + e.getMessage());
}

finally 块

无论是否发生异常,finally 块中的代码都会执行,常用于资源清理(如关闭文件流)。

try {
    FileInputStream file = new FileInputStream("test.txt");
} catch (IOException e) {
    System.out.println("文件读取错误: " + e.getMessage());
} finally {
    System.out.println("资源清理完成");
}

throw 关键字

主动抛出异常,通常用于自定义异常逻辑。

void validateAge(int age) {
    if (age < 18) {
        throw new ArithmeticException("年龄不足");
    }
}

throws 关键字

在方法声明中指定可能抛出的异常,强制调用者处理。

void readFile() throws IOException {
    FileInputStream file = new FileInputStream("test.txt");
}

自定义异常

通过继承 ExceptionRuntimeException 创建自定义异常类。

java 如何处理异常

class CustomException extends Exception {
    CustomException(String message) {
        super(message);
    }
}

void checkValue(int value) throws CustomException {
    if (value < 0) {
        throw new CustomException("值不能为负数");
    }
}

异常处理的最佳实践

  • 避免空的 catch 块,至少记录日志。
  • 优先捕获具体异常,而非通用 Exception
  • 使用 try-with-resources 自动管理资源(Java 7+)。
  • 在业务逻辑中合理使用受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
// try-with-resources 示例
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    System.out.println("IO错误: " + e.getMessage());
}

通过以上方法,可以有效处理 Java 中的异常,提升代码的可靠性和可维护性。

分享给朋友:

相关文章

react如何抛异常

react如何抛异常

如何在 React 中抛出异常 在 React 中,异常处理通常分为组件内部错误和全局错误捕获两种方式。以下是具体实现方法: 组件内部抛出异常 直接使用 JavaScript 的 throw 语句…

react 如何处理时间戳

react 如何处理时间戳

时间戳转换为可读格式 使用 new Date() 将时间戳转换为日期对象,再通过内置方法格式化输出。例如显示为 YYYY-MM-DD HH:MM:SS: const timestamp = 1625…

react源码如何处理生命周期

react源码如何处理生命周期

React 生命周期处理机制 React 的生命周期处理主要分为三个阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。React 内部通过协调算法(Reconci…

react副作用到底如何处理

react副作用到底如何处理

React 副作用的基本概念 副作用指在组件渲染过程中,对外部世界产生影响的操作(如数据获取、订阅、手动修改DOM等)。React 的函数组件是纯函数,副作用需通过特定机制处理。 使用 useE…

java语言如何进行异常处理

java语言如何进行异常处理

Java异常处理机制 Java通过try-catch-finally语句块实现异常处理。异常分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)…

java 如何抛异常

java 如何抛异常

抛出异常的方法 在Java中,可以通过throw关键字手动抛出异常。异常可以是Java内置的异常类,也可以是自定义的异常类。 throw new ExceptionType("Error messa…