在Java中读取文件时编译错误

时间:2017-08-03 17:57:20

标签: java file

我正在尝试运行这个简单的程序,该程序从单独的文本文件中读取并打印出每一行。但是,当我尝试编译它时,它一直给我同样的错误:

story.java:11: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
                x = new Scanner(new File("names.txt"));

这是我的代码:

import java.io.*;
import java.util.*;

public class story {

    private static Scanner x;

    public static void main(String[] args) {

        String story = "";
        x = new Scanner(new File("names.txt"));

        while(x.hasNext()){
            story = story + x;
        }
        System.out.println(story);

    }
}

5 个答案:

答案 0 :(得分:1)

此消息告诉您,您的main()方法正在执行一些可能抛出FileNotFoundException的内容,但您既没有捕获此异常,也没有声明{{1}可能抛出此类异常功能。

要更正它,请按以下方式声明main()方法:

main()

答案 1 :(得分:0)

编程时,有正常的逻辑流程可以解决您的问题,第二个逻辑流程可以处理" Exceptional"意外情况。 Java使用类型public static void main(String[] args) throws FileNotFoundException { 和关键字Exception来使代码位出现异常错误状态。

正在检查您的程序在编写时是否有能力处理异常的返回值。由于您没有处理异常返回值,因此不会编译它。

以下是您的代码,处理此throw。密切关注Exceptiontry块结构,因为它是编写可以处理catch引发的代码的方式。但是,不要为我处理异常的方式做出限制,因为如何处理异常的细节取决于您希望做什么。

Exception

还有另一种方法可以处理有时候合适的异常,即不处理"例外。执行此操作时,请将方法从import java.io.*; import java.util.*; public class story { private static Scanner x; public static void main(String[] args) { String story = ""; try { x = new Scanner(new File("names.txt")); } catch (FileNotFoundException error) { System.out.println("the program failed because \"names.txt\" was not found."); return -1; } while(x.hasNext()){ story = story + x; } System.out.println(story); } } 更改为whatever the method was。例如whatever the method was throws Exceptionpublic static void main(String[] args)

虽然这会处理编译器的抱怨,但是应该谨慎使用它,因为通过public static void main (String[] args) throws Exception方法通过嵌套方法调用冒出的异常会使程序崩溃,通常没有可读的输出可能会导致错误更容易让人修复。

答案 2 :(得分:0)

将其更改为

public static void main(String[] args) throws Exception {

    String story = "";
    x = new Scanner(new File("names.txt"));

    while(x.hasNext()){
        story = story + x;
    }
    System.out.println(story);

}

OR

将try catch放入代码中

public static void main(String[] args) {

    String story = "";
    try {
        x = new Scanner(new File("names.txt"));
        while(x.hasNext()){
            story = story + x;
        }
        System.out.println(story);
    }
    catch(Exception e) {
        // handle 
    }
}

答案 3 :(得分:0)

每当使用文件对象时,您必须处理FileNotFoundException的可能性,这种情况在您指定的文件不存在时发生。

要解决这个问题,只需在主标题中说throws Exception,或使用try / catch块。

public static void main(String[] args) throws Exception {

public static void main(String[] args) {

    String story = "";
    try 
    {
        x = new Scanner(new File("names.txt"));
        while(x.hasNext()){
            story = story + x;
        }
        System.out.println(story);
    }
    catch(Exception e) 
    {
        System.out.println("Error: File not found!");
    }
} 

答案 4 :(得分:0)

1)您需要将它们放在try catch块中。 2)指定“names.txt”的路径。 3)我的代码如下:

String story = "";
       try {
         x = new Scanner(new File("/Users/Workspace/names.txt"));
         while(x.hasNext()){
            System.out.println(story = story+x.next());
         }
         System.out.println(story);
     } catch (FileNotFoundException e){
         e.printStackTrace();
     }
 }