java中文件找不到抛出的异常_java - 文件扫描程序:未报告的异常FileNotFoundException;必须被抓住或宣布被抛出 - SO中文参考 - www.soinside.com...

我同意关于问题的其他答案(如果找不到文件,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,因为它似乎缺失了。

也可以看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值