Как лучше обработать исключение в классе В, которое может выбросить метод класса А в Java?
Объясняю ситуацию. Всё будет детально просто.
Имеется собственный класс исключений не проект.
Имеется класс-валидатор FileValidator. Данный класс содержит один единственный метод isValidPath, который может выбросить исключение.
Далее имеется другой класс DataReader. В данном классе имеется метод, который будет использовать метод-валидатор из класса FileValidator и там, соответственно, FileValidator может выбросить исключение, получится нужно будет 2 раза обрабатывать исключение и писать один и тот же текст в исключении.
public class FileValidator {
private static final Logger LOGGER = LogManager.getLogger();
private FileValidator() {
}
public static boolean isValidPath(String path) throws ThreadException {
if(path == null || path.isEmpty() || path.trim().isEmpty()) {
LOGGER.log(Level.ERROR, "Incorrect path to file.");
throw new ThreadException("Incorrect path to file.");
}
File file = new File(path);
return file.exists() && file.length() > 0;
}
}
public class DataReader {
private static final Logger LOGGER = LogManager.getLogger();
public static List<String> read(String path) throws ThreadException {
if(FileValidator.isValidPath(path)) {
try(Stream<String> lineStream = Files.lines(Paths.get(path))) {
return lineStream.collect(Collectors.toCollection(ArrayList::new));
} catch (IOException e) {
throw new ThreadException("Error reading from file", e);
}
} else {
throw new ThreadException("Incorrect path to file.");
}
}
}
Вопрос в чем, чтобы не дублировать два раза код исключения, который второй раз появляется в классе DataReader в таком виде throw new ThreadException("Incorrect path to file.");, хоть точно такая же строка с исключением есть в FileValidator-классе, как правильно организовать обработку исключения? А может и вовсе в валидаторе не нужно выбрасывать исключение?
Хочется, чтобы код был не громоздким и не содержал дубляжи этих исключений.
Ответы (1 шт):
Может сделать что-бы isValidPath(String path) возвращал просто false если path пустой, а ошибку триггерить уже DataReader, если она вам нужна)
public class FileValidator {
private static final Logger LOGGER = LogManager.getLogger();
private FileValidator() {
}
public static boolean isValidPath(String path) {
if(path == null || path.isEmpty() || path.trim().isEmpty()) {
LOGGER.log(Level.ERROR, "Incorrect path to file.");
return false;
}
File file = new File(path);
return file.exists() && file.length() > 0;
}
}