我在 main
方法中调用了一个名为 readFile()
的方法,readFile()
抛出 FileNotFoundException 但 main
不会,如下所示:
public static void main(String[] args){
readFile();
}
public static void readFile() throws FileNotFoundException{
Scanner input = new Scanner(new File("file.txt"));
...
}
当我编译程序时,我在 main
方法中的 readFile()
处出错。看来我还需要在 main
的 header 中抛出异常。为什么我需要在 main
和 readFile()
的两个 header 中抛出异常?
最佳答案
Java 关于它的异常有一些争议。它有两类异常。选中和未选中。从 RuntimeException 或 Error 扩展的任何异常都是未经检查的,不需要被捕获或在方法签名中显式声明为可抛出。
然而,FileNotFound 是一个已检查异常,必须在方法签名中捕获或声明为可抛出。
基本思想是,已检查异常是您可以从中恢复的异常,而未检查异常是来自编程中最有可能无法恢复的错误的异常。
您可以在这里阅读所有相关信息:https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
关于java - 什么时候抛出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486268/