📜  如何在 java 中处理已检查的异常 (1)

📅  最后修改于: 2023-12-03 15:38:17.314000             🧑  作者: Mango

如何在 Java 中处理已检查的异常

在 Java 中,当程序出现异常时,它会抛出一个异常对象。这个异常对象包含了异常的类型、异常的原因和异常发生的位置等信息。Java 中的异常分为两种:已检查的异常和未检查的异常。

已检查的异常必须在方法中进行处理,否则编译器会报错。处理已检查的异常有两种方式:抛出异常和捕获异常。

抛出异常

当我们不想处理某个已检查的异常时,可以将异常抛给调用者处理。Java 中使用 throws 关键字来抛出异常。

public void readFile() throws IOException {
    // 读取文件的代码
}

上面的代码中,throws 关键字表明这个方法可能会抛出 IOException 异常。调用这个方法的代码必须要使用 try-catch 块来处理这个异常,否则编译器会报错。

捕获异常

当我们想要处理某个已检查的异常时,可以使用 try-catch 块捕获异常。

public void readFile() {
    try {
        // 读取文件的代码
    } catch (IOException e) {
        // 处理 IOException 异常的代码
    }
}

上面的代码中,try 块中的代码可能会抛出 IOException 异常。如果这个异常被抛出,catch 块会捕获这个异常并处理。在 catch 块中,我们可以做一些恰当的处理,比如打印异常的信息或采取恰当的措施来处理异常。

需要注意的是,catch 块必须按照异常的类型来捕获异常。如果代码中抛出的异常类型不是 catch 块中声明的异常类型,那么这个异常就无法被处理,会继续向外抛出。

finally 块

除了 try-catch 块之外,Java 还提供了 finally 块。finally 块中的代码总是会被执行,无论在 try 块中是否有异常被抛出。

public void readFile() {
    FileInputStream fis = null;
    try {
        fis = new FileInputStream("file.txt");
        // 读取文件的代码
    } catch (IOException e) {
        // 处理 IOException 异常的代码
    } finally {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                // 处理异常
            }
        }
    }
}

在上面的代码中,finally 块中关闭了文件输入流。无论在 try 块中是否有异常被抛出,文件输入流总是会被关闭。

总结

在 Java 中,处理已检查的异常很重要。我们可以使用 throws 关键字将异常抛给调用者处理,也可以使用 try-catch 块来捕获并处理异常。此外,finally 块可以用来执行无论是否有异常都需要执行的代码。