То, что вы делаете, будет «работать».Однако большинство программистов на Java, вероятно, согласятся, что это пример использования исключений для реализации «нормального» управления потоком.Проще написать так:
Scanner testscn = new Scanner(input).useDelimiter("\n");
testscn.forEachRemaining((scan) -> {
String[] line = scan.split("-");
File img = new File(line[0]);
if (img.exists()) {
test.put(img, line[1].split(","));
} else {
logger.warn("File path " + line[0] + ": Skipping.");
}
});
testscn.close();
И это следует переписать так, чтобы избежать потенциальной утечки ресурса:
try (Scanner testscn = new Scanner(input).useDelimiter("\n")) {
testscn.forEachRemaining((scan) -> {
String[] line = scan.split("-");
File img = new File(line[0]);
if (img.exists()) {
test.put(img, line[1].split(","));
} else {
logger.warn("File path " + line[0] + ": Skipping.");
}
});
}