Java DateTime, недостижимый блок перехвата для ParseException - PullRequest
0 голосов
/ 29 июня 2018

Это метод для анализа объекта даты в конкретном шаблоне. Но он выдает ошибку для блока catch, говоря, что он недоступен, и я могу либо удалить блок catch, либо вызвать исключение напрямую. Причина, по которой я хотел получить блок catch, заключается в том, чтобы иметь видимость в случае возникновения ошибки.

public static Date parseDate(Date a, String someFormat) {
    Date parsedDate = null;
    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(someFormat);
    try {
        Instant instant = a.toInstant();

        LocalDate localDate =LocalDate.parse(dateFormat.format(instant), dateFormat);
        parsedDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    } catch (ParseException e) {
        logger.error(ExceptionUtils.getRootCauseMessage(e), e);
    }
    return parsedDate;
}

1 Ответ

0 голосов
/ 29 июня 2018

Единственное проверенное исключение, что ваш try блок бросков - это не ParseException, который бросает SimpleDateFormat, а DateTimeParseException, который LocalDate.parse бросает и DateTimeParseException не является ParseException.

Компилятор считает блок catch недоступным, поскольку ParseException никогда не выбрасывается из блока try.

Просто поймайте DateTimeParseException.

} catch (DateTimeParseException e) {

Обратите внимание, что, поскольку это RuntimeException, совсем не обязательно его ловить. Но так как вы уже пытаетесь получить «видимость», что является хорошей вещью, и вы уже пытаетесь перехватить исключение, просто поймайте правильный тип исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...