📜  Java中的已检查与未检查异常| checked或unchecked异常(1)

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

Java中的已检查与未检查异常

在Java编程中,异常是一种表示程序运行期间可能出现的错误或异常情况的机制。Java中的异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。本文将介绍这两种异常的特点和使用方法。

已检查异常(Checked Exception)

已检查异常是指在Java编译器强制要求程序显式处理的异常。这些异常通常是由外部因素引起的,例如文件I/O错误、网络连接异常等。已检查异常的特点包括:

  • 必须在方法的定义中声明已检查异常,并使用throws关键字。
  • 调用方法时,必须要么捕获或处理已检查异常,要么再次将异常抛出。否则,编译器将报错。

以下是一个示例代码,演示了如何处理已检查异常:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile {
    public static void main(String[] args) {
        try {
            File file = new File("input.txt");
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到!");
            e.printStackTrace();
        }
    }
}

在上述代码中,我们尝试读取一个文件,并使用Scanner类逐行打印文件内容。由于文件可能不存在,所以在try块中的Scanner初始化可能抛出FileNotFoundException异常。我们使用catch块捕获该异常,并打印出错信息。

未检查异常(Unchecked Exception)

未检查异常是指在编译时不需要强制处理的异常。这些异常通常是由程序错误导致的,例如数组越界、空指针引用等。未检查异常的特点包括:

  • 未检查异常可以是继承自RuntimeException类的任何异常类。
  • 未检查异常可以选择性地进行捕获和处理。
  • 方法中可以声明未检查异常,但不强制要求。

以下是一个示例代码,演示了未检查异常的使用:

public class Divide {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        try {
            int result = a / b;
            System.out.println("结果:" + result);
        } catch (ArithmeticException e) {
            System.out.println("除数不能为0!");
            e.printStackTrace();
        }
    }
}

在上述代码中,我们尝试计算一个除法操作,当除数为0时会抛出ArithmeticException异常。我们使用catch块捕获该异常,并打印出错信息。

总结

已检查异常和未检查异常是Java中异常处理的两种类型。已检查异常要求在编译时进行处理,而未检查异常在编译时不需要强制处理。合理地处理异常可以增加程序的健壮性,避免潜在的错误。

参考链接:Official Java Documentation on Exceptions