我调用了方法中命名readFile()
的main
方法,readFile()
抛出FileNotFoundException,但main
没有,如下所示:
public static void main(String[] args){ readFile(); } public static void readFile() throws FileNotFoundException{ Scanner input = new Scanner(new File("file.txt")); ... }
当我编译程序时,我readFile()
在main
方法中遇到了错误.似乎我需要在标题中抛出一个异常main
.我为什么要抛出的异常的两个头main
和readFile()
?
Java对其例外有一些争议.它有两类例外.选中并取消选中.从RuntimeException或Error扩展的任何异常都是未选中的,不需要在方法签名中捕获或显式声明为throwable.
但是,FileNotFound是一个经过检查的异常,必须在方法签名中捕获或声明为throwable.
基本思想是,已检查的异常是您可以从中恢复的异常,而未经检查的异常是来自编程中最可能无法恢复的异常的异常.
你可以阅读所有关于它在这里:https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
将throws
关键字视为承诺; 你说你现在不会抓住异常,但你会在调用语句中捕获它.
您在readFile
方法中当前拥有的代码似乎完全有效,但您需要将调用语句包装在一个try-catch
适当的处理异常中.