当前位置:首页 > Java

java如何使用异常

2026-02-05 02:22:02Java

异常处理基础

Java异常处理通过try-catch-finally机制实现。将可能抛出异常的代码放入try块,通过catch捕获并处理异常,finally块用于执行必须的清理操作(无论是否发生异常都会执行)。

try {
    // 可能抛出异常的代码
    int result = 10 / 0; // 抛出ArithmeticException
} catch (ArithmeticException e) {
    System.out.println("除零错误: " + e.getMessage());
} finally {
    System.out.println("清理资源");
}

异常类型

  • 受检异常(Checked Exception):编译时强制检查,必须处理(如IOException)。
  • 非受检异常(Unchecked Exception):包括运行时异常(如NullPointerException)和错误(如OutOfMemoryError),通常不强制处理。
// 受检异常需显式处理
try {
    FileReader file = new FileReader("test.txt");
} catch (FileNotFoundException e) {
    System.out.println("文件未找到");
}

抛出异常

通过throw主动抛出异常,或在方法签名中使用throws声明可能抛出的异常。

// 抛出异常
void validateAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("年龄不能为负数");
    }
}

// 声明异常
void readFile() throws IOException {
    Files.readAllLines(Paths.get("file.txt"));
}

自定义异常

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

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

// 使用示例
try {
    throw new CustomException("自定义异常");
} catch (CustomException e) {
    System.out.println(e.getMessage());
}

异常链

通过initCause()或构造方法传递原始异常,保留完整的异常信息。

try {
    // 模拟原始异常
    throw new NullPointerException();
} catch (NullPointerException e) {
    IllegalStateException ex = new IllegalStateException("包装异常");
    ex.initCause(e);
    throw ex;
}

try-with-resources

自动管理资源(实现AutoCloseable接口的类),无需显式调用close()

java如何使用异常

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    System.out.println(br.readLine());
} catch (IOException e) {
    System.out.println("IO异常: " + e.getMessage());
}

最佳实践

  • 避免捕获过于宽泛的异常(如直接捕获Exception),应针对具体异常类型处理。
  • finally块中释放资源,或使用try-with-resources简化代码。
  • 日志记录异常信息(如e.printStackTrace()或日志框架)。
  • 自定义异常时提供有意义的错误信息。

分享给朋友:

相关文章

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

java如何抛出异常

java如何抛出异常

抛出异常的基本语法 在Java中,使用 throw 关键字手动抛出异常。语法格式为: throw new ExceptionType("Error message"); ExceptionType…

java语言如何进行异常处理

java语言如何进行异常处理

异常处理的基本概念 Java中的异常处理机制用于捕获和处理程序运行时可能出现的错误或异常情况。异常分为检查型异常(Checked Exception)和非检查型异常(Unchecked Excepti…

react filter如何使用

react filter如何使用

react filter 的基本用法 在 React 中,filter 通常用于筛选数组数据,常见于列表渲染或数据处理场景。filter 是 JavaScript 数组的原生方法,但在 React 中…

react如何使用dispatch

react如何使用dispatch

使用 useDispatch 钩子 在函数组件中,通过 react-redux 提供的 useDispatch 钩子获取 dispatch 函数。引入 useDispatch 后直接调用即可:…

react如何使用插件

react如何使用插件

使用插件的基本方法 在React项目中使用插件通常涉及安装、导入和集成三个主要环节。以下是具体操作方式: 安装插件通过npm或yarn完成。例如,要安装react-router-dom插件,可以运行…