这是将日期对象解析为特定模式的方法。但是它给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;
}

最佳答案

您的try块抛出的唯一已检查异常不是ParseException(这是SimpleDateFormat会抛出的异常),而是DateTimeParseException(这是 LocalDate.parse 所抛出的异常),而 DateTimeParseException 不是ParseException

编译器将catch块视为不可访问,因为ParseException从未从try块中抛出。

只需捕获DateTimeParseException即可。

} catch (DateTimeParseException e) {

请注意,由于它是RuntimeException,因此完全没有必要完全捕获它。但是,由于您已经在尝试具有“可见性”,这是一件好事,并且已经在尝试捕获异常,所以只需捕获正确的异常类型即可。

关于java - Java DateTime,ParseException的不可达catch块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51105599/

10-08 21:49