Java 认识异常并掌握使用

在 Java 基础语法中,当程序执行过程中发生错误或异常时,会抛出异常,异常即指程序在运行过程中遇到的错误或意外情况。Java 中的异常是用于处理程序意外情况的一种机制。

Java 认识异常并掌握使用

什么是异常?

在 Java 基础语法中,当程序执行过程中发生错误或异常时,会抛出异常,异常即指程序在运行过程中遇到的错误或意外情况。Java 中的异常是用于处理程序意外情况的一种机制。

异常的分类

Java 中的异常一般分为两类:可检查异常(checked exception)和不可检查异常(unchecked exception)。

  • 可检查异常:这种类型的异常在编码时必须使用 try-catch 块或者 throws 关键字进行处理,不处理编译时会报错。
  • 不可检查异常:这种类型的异常在编码时可以不处理,如果不处理,在运行时会抛出异常。

异常处理的方法

异常的处理可以使用 try-catch-finally 块进行处理,也可以使用 throws 关键字将异常抛给调用者。

try-catch-finally 块

try {
    // 可能会抛出异常的代码块
} catch (Exception e) {
    // 处理异常的代码块
} finally {
    // 最后一定执行的代码块
}

在 try 块中写可能会抛出异常的相关代码,在 catch 块中处理异常,如果有多个 catch 块,从上到下按顺序匹配异常类型进行处理。

finally 块中的代码一定会执行,无论 try 和 catch 块中是否有异常抛出,都会执行 finally 块中的代码。finally 块一般用于释放资源等操作。

throws 关键字

当一个方法将异常抛给调用者时,需要在方法中使用 throws 关键字,如下所示:

public void test() throws Exception {
    // 可能会抛出异常的代码块
}

调用该方法时,调用者需要处理或者继续抛出该异常。

示例说明

可检查异常的处理

在下面的示例代码中,我们可以看到,当调用 FileInputStream 的构造方法时,需要抛出 FileNotFoundException 异常。由于该异常为可检查异常,所以在编码时需要使用 try-catch-finally 块进行处理。

示例代码如下:

public class Demo {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("D:\\test.txt");
            // TODO 业务处理
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在上述示例代码中,我们通过使用 try-catch-finally 块捕获了 FileNotFoundException 异常,并在 finally 块中释放了文件流资源。

不可检查异常的处理

在下面的示例代码中,我们可以看到,当数组下标越界时,会抛出 ArrayIndexOutOfBoundsException 异常,该异常为不可检查异常,所以不需要在编码时进行处理。

示例代码如下:

public class Demo {
    public static void main(String[] args) {
        String[] arr = new String[3];
        System.out.println(arr[3]);
    }
}

在上述示例代码中,当使用 System.out.println(arr[3]) 时,会抛出 ArrayIndexOutOfBoundsException 异常,我们可以在控制台看到完整的异常信息。

总结

Java 中的异常是处理程序意外情况的重要机制,可检查异常必须在编码时进行处理,而不可检查异常则可以忽略。在异常处理时,我们可以使用 try-catch-finally 块进行处理,也可以使用 throws 关键字将异常抛给调用者。最后,需要注意资源的释放,在 finally 块中释放资源是一种较好的方式。

本文标题为:Java 认识异常并掌握使用