当前位置:首页 > 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如何使用swiper

react如何使用swiper

安装 Swiper 依赖 在 React 项目中使用 Swiper 前,需要安装 Swiper 的核心库和 React 组件库。通过 npm 或 yarn 安装以下依赖: npm install s…

react如何使用jquery

react如何使用jquery

在 React 中使用 jQuery React 和 jQuery 的设计理念不同,React 基于虚拟 DOM 和数据驱动,而 jQuery 直接操作真实 DOM。若需在 React 中整合 jQu…

react如何使用axios

react如何使用axios

安装 Axios 在 React 项目中安装 Axios,可以通过 npm 或 yarn 进行安装: npm install axios 或 yarn add axios 导入 Axios 在需要…

react如何使用link

react如何使用link

使用 Link 组件进行页面导航 在 React 中,Link 是 react-router-dom 提供的组件,用于在单页应用(SPA)中实现客户端路由导航,避免页面刷新。 安装 react-…

react 如何使用fiber

react 如何使用fiber

使用 React Fiber 的方法 React Fiber 是 React 16 引入的重新实现的协调算法,用于优化渲染性能。以下是使用 Fiber 的方法。 理解 React Fiber 的核心…

react如何使用agora

react如何使用agora

使用 React 集成 Agora 视频通话 SDK 安装 Agora SDK 在 React 项目中安装 Agora RTC SDK: npm install agora-rtc-sdk 初始化…