这是将日期对象解析为特定模式的方法。但是它给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;
}
答案 0 :(得分:3)
您的try
块引发的唯一已检查异常不是ParseException
,这是SimpleDateFormat
会抛出的异常,而是DateTimeParseException
,这是{{ 3}}抛出,并且LocalDate.parse
不是ParseException
。
编译器将catch
块视为不可访问,因为ParseException
从未从try
块中抛出。
只需抓住DateTimeParseException
。
} catch (DateTimeParseException e) {
请注意,因为它是RuntimeException
,所以完全没有必要完全捕获它。但是,由于您已经在尝试具有“可见性”,这是一件好事,并且已经在尝试捕获异常,因此只需捕获正确的异常类型即可。