当前位置:首页 > Java

java语言如何进行异常处理

2026-04-08 21:00:22Java

Java 异常处理的基本结构

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("finally 块始终执行");
}

捕获多个异常

可以定义多个 catch 块处理不同类型的异常,异常类型需从子类到父类排列。

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

使用 throws 声明异常

若方法内部不处理异常,可通过 throws 将异常抛给调用者处理。

public void readFile() throws IOException {
    FileReader file = new FileReader("test.txt"); // 可能抛出 IOException
}

自定义异常

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

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

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

异常链与重新抛出异常

通过 throw 重新抛出异常,或使用异常链保留原始异常信息。

java语言如何进行异常处理

try {
    // 代码逻辑
} catch (IOException e) {
    throw new RuntimeException("高阶异常", e); // 传递原始异常
}

Java 7 增强的异常处理

  • 多重捕获:一个 catch 块处理多种异常类型。
  • try-with-resources:自动关闭资源(如 InputStream),资源需实现 AutoCloseable 接口。
// 多重捕获
try {
    // 代码逻辑
} catch (IOException | SQLException e) {
    System.out.println("IO 或 SQL 异常: " + e.getMessage());
}

// try-with-resources
try (FileInputStream fis = new FileInputStream("file.txt")) {
    // 自动关闭 fis
} catch (IOException e) {
    e.printStackTrace();
}

注意事项

  • 避免空的 catch 块,需至少记录异常信息。
  • 区分受检异常(Exception 子类,必须处理)和非受检异常(RuntimeException 子类,可选择性处理)。
  • finally 块中避免返回语句,否则会覆盖 trycatch 的返回值。

标签: 异常语言
分享给朋友:

相关文章

java如何自定义异常

java如何自定义异常

自定义异常的基本概念 在Java中,自定义异常是通过继承现有的异常类来实现的。通常选择继承Exception(受检异常)或RuntimeException(非受检异常)。自定义异常允许开发者根据业务需…

css语言制作

css语言制作

CSS 基础语法 CSS(层叠样式表)用于描述 HTML 文档的样式。基本语法由选择器和声明块组成: selector { property: value; } selector 选择 HTML…

实现语言php

实现语言php

PHP 基础语法 PHP 脚本以 <?php 开头,以 ?> 结尾。文件通常以 .php 为扩展名。 <?php // 单行注释 /* 多行注释 */ echo "Hello,…

java如何自定义异常

java如何自定义异常

自定义异常的基本步骤 在Java中自定义异常需要继承自Exception类或其子类。通常推荐继承RuntimeException创建非受检异常,或继承Exception创建受检异常。 // 自定义非…

java如何捕获异常

java如何捕获异常

捕获异常的基本语法 在Java中,使用try-catch块捕获异常。将可能抛出异常的代码放在try块中,异常处理逻辑放在catch块中。 try { // 可能抛出异常的代码 i…

java异常如何处理

java异常如何处理

异常处理的基本概念 Java异常分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。检查型异常需在编译时处理(如IOException),非检…