Как лучше обработать исключение в классе В, которое может выбросить метод класса А в 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 шт):

Автор решения: AVRamones

Может сделать что-бы 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;
 }
}
→ Ссылка