Java DateTime,ParseException的不可访问捕获块

Java DateTime,ParseException的不可访问捕获块,java,datetime,java-8,Java,Datetime,Java 8,这是将日期对象解析为特定模式的方法。但是它给出了catch块的错误,说它不可访问,我可以删除catch块或者直接抛出异常。我想要catch块的原因是在出现任何错误时具有可见性 public static Date parseDate(Date a, String someFormat) { Date parsedDate = null; DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(someFormat);

这是将日期对象解析为特定模式的方法。但是它给出了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
抛出的异常,而不是
ParseException


编译器认为
catch
块不可访问,因为
ParseException
从未从
try
块抛出

只需捕获
DateTimeParseException

} catch (DateTimeParseException e) {

注意,因为它是一个
运行时异常
,所以根本不需要捕获它。但是,由于您已经在尝试“可见性”,这是一件好事,并且您已经在尝试捕获异常,所以只需捕获正确的异常类型。

ParseException
是一个选中的异常,它不会从try块中的任何语句中抛出,尝试
Exception
而不是
ParseException
代码的哪个部分应该抛出ParseException,该类来自哪个包?有一个java.text.ParseException,但在上述情况下显然不会引发该异常。LocalDate.parse只是抛出DateTimeParseException,这无论如何都是一个RuntimeException。如果编译器说catch块不可访问,那么您可以非常确定它永远不会被调用,这意味着永远不会抛出异常,也没有任何东西可以提供可见性。