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错误不管您如何切片:如果您不处理选中的异常,代码将不会编译或运行。不会。