Java DateTime,ParseException的Unreachable catch块

时间:2018-06-29 16:01:12

标签: java datetime java-8

这是将日期对象解析为特定模式的方法。但是它给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 :(得分:3)

您的try块引发的唯一已检查异常不是ParseException,这是SimpleDateFormat会抛出的异常,而是DateTimeParseException,这是{{ 3}}抛出,并且LocalDate.parse不是ParseException

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

只需抓住DateTimeParseException

} catch (DateTimeParseException e) {

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