java - 什么时候抛出 FileNotFoundException

标签 java

我在 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 中抛出异常。为什么我需要在 mainreadFile() 的两个 header 中抛出异常?

最佳答案

Java 关于它的异常有一些争议。它有两类异常。选中和未选中。从 RuntimeException 或 Error 扩展的任何异常都是未经检查的,不需要被捕获或在方法签名中显式声明为可抛出。

然而,FileNotFound 是一个已检查异常,必须在方法签名中捕获或声明为可抛出。

基本思想是,已检查异常是您可以从中恢复的异常,而未检查异常是来自编程中最有可能无法恢复的错误的异常。

您可以在这里阅读所有相关信息:https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

关于java - 什么时候抛出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486268/

相关文章:

java - 如何在没有额外连接表的情况下使用 Hibernate/JPA 映射 List<String>?

java - 如何从方法中重新启动程序

java - 设置 JVM 参数启动 catalina.bat

java - Java中实现观察者模式,同一个观察者跨多个类

Java 项目可能因循环错误而崩溃

java - Java 是 Android 编程的唯一方法有什么特殊原因吗?

java - Exo Player是否可以动态播放mp3文件的范围而不进行剪辑?

java - Spring 消息 i18n ReloadableResourceBundleMessageSource 中的 StackoverflowExcepton

java - appengine :update 的 Maven 构建生命周期

java - Hibernate 延迟获取 - 获取子对象