Java FileNotFoundException;错误

Java FileNotFoundException;错误,java,arrays,Java,Arrays,我正在编写一个程序,其中多个方法可以访问一个文件和从文件中读取的对象数组,但我一直遇到这个错误 useHamayelSajaEmployee.java:9: error: unreported exception FileNotFoundException; must be caught or declared to be thrown public static final Scanner scan2 = new Scanner(file); //scanner for reading

我正在编写一个程序,其中多个方法可以访问一个文件和从文件中读取的对象数组,但我一直遇到这个错误

useHamayelSajaEmployee.java:9: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
    public static final Scanner scan2 = new Scanner(file); //scanner for reading from file
                                        ^
1 error
这就是代码的外观:

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

public class useHamayelSajaEmployee 
{
    public static final int MAX_EMPLOYEES = 1000;
    public static final HamayelSajaEmployee []emps = new HamayelSajaEmployee[MAX_EMPLOYEES]; 
    public static final File file = new File("empList.txt");
    public static final Scanner scan2 = new Scanner(file); //scanner for reading from file
我的教授不允许我们使用try-catch。有没有其他方法可以避免这个错误而不用它


谢谢你

一点研究会告诉你:
FileNotFoundException
是一个选中的异常。您必须将该调用包装在
try/catch
块中

public class HamayelSajaEmployee {
    public static final int MAX_EMPLOYEES = 1000;
    public static final HamayelSajaEmployee []emps = new HamayelSajaEmployee[MAX_EMPLOYEES]; 
    public static File file;
    public static Scanner scan2;

    static {
        try {
            file = new File("empList.txt");
            scan2 = new Scanner(file); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
也许可以加上这个

try {

    Scanner scan2 = new Scanner(file);

    while (scan2.hasNextLine()) {
        int i = scan2.nextInt();
        System.out.println(i);
    }
    scan2.close();
} 
catch (FileNotFoundException e) {
    e.printStackTrace();
}
否则尝试

catch (Exception e) {
Toast toast = Toast.makeText(this, "File Not Found" , Toast.LENGTH_SHORT);
toast.show();
}
这是因为当没有名为“empList.txt”的现有文件时,对象“file”可能为空

要解决此问题,最好将Scanner行的代码移到一个方法中,而不是一个全局变量,并向该方法添加一个抛出异常:

public class useHamayelSajaEmployee {
    public static final int MAX_EMPLOYEES = 1000;
    public static final HamayelSajaEmployee []emps = new HamayelSajaEmployee[MAX_EMPLOYEES]; 
    public static final File file = new File("empList.txt");

    public void methodname() throws FileNotFoundException{
        Scanner scan2 = new Scanner(file); //scanner for reading from file
    }
}

@达菲莫,让他们感觉不好,这样他们就再也不会回来了。当我哭完后,我会有一个很好的恢复。捕捉原始的
异常也被认为是不好的做法。你的代码中没有注释。如果我是一名大学教授,我可能会给你一个零分。这个能编译吗?我的编译器抱怨:“空白的最终字段scan2可能尚未初始化”注释通常只是杂乱无章。要提防任何教你编程的大学教授。问他们是否曾经为了钱而写过代码。@duffymo我写这个程序是为了介绍java类,我不允许使用我在课堂上没有学过的任何代码。我们从来没有涉及过尝试和捕获,所以我必须以不同的方式解决这个问题,并将尝试放在哪里。。。。?我猜OP以前从未见过静态块。@Anasbzr我的教授不允许我们使用try-catch。有没有其他方法可以避免此错误而不使用它?很抱歉,如果您不想使用try-catch,那么您必须检查文件是否为空,然后继续使用扫描仪检查我的文件是否为空。我可以从我的主方法访问它,但不能从其他方法访问。我知道您的文件不是空的,但您需要确保检查文件是否为空,当文件可能为空或未找到或名称错误时,您需要处理异常。。。这就是为什么会有例外。因此,如果不只是声明“file!=null”,我会在主方法声明的末尾放一个“throws-IOException”。我应该对所有方法都这样做吗?我试着放一个“throws-IOException”“在我的一个方法声明的末尾,但是如果我尝试在程序中的任何其他地方调用该方法,我会得到以下错误:useHamayelSajaEmployee.java:138:error:unreported exception IOException;必须捕获或声明为抛出listAll();^1错误不管您如何切片:如果您不处理选中的异常,代码将不会编译或运行。不会。