我同意关于问题的其他答案(如果找不到文件,Scanner可以抛出异常)。我没有看到我认为正确的解决方案。
String[] users = new String[6];
int index_counter = 0;
File credentials_file = new File("credentials.txt");
try (Scanner file_reader = new Scanner(credentials_file)) {
while (file_reader.hasNextLine()) {
users[index_counter] = file_reader.nextLine();
index_counter++;
}
} catch (FileNotFoundException e) {
// handle exception
} catch (NoSuchElementException e) {
// handle exception
} catch (IllegalStateException e) {
// handle exception
}
try-with-resources声明将自动为您关闭Scanner。这适用于任何实现AutoCloseable接口的类。
在这种情况下,它将声明置于try的范围内,因此将捕获异常。
有一个论点是你应该让异常冒泡到调用者。 This answer描述了如何做到这一点。但在这种情况下,调用者并不真正知道如何处理FileNotFoundException,因为它对文件一无所知。该文件在此方法中定义。
您可以抛出一个不同的,更具解释性的异常。或者你可以通过解释credentials.txt是什么来处理这个例外。或者故障转移到默认值。或者只记录异常,尽管这是有问题的。如果你这样做,你应该(在评论中)解释为什么这就足够了。
我添加了一行来增加index_counter,因为它似乎缺失了。
也可以看看