抛出Java可选检查异常

时间:2018-10-24 08:46:09

标签: java lambda java-8 optional

我下面的代码正常运行。代码使用Java8 optional.ofNullable和 isPresent。

 Optional<String> dateOptional = null;
    try {
        dateOptional = Optional.ofNullable(src.getCreateDate());
        if (dateOptional.isPresent()) {
            date = dateFormat.parse(dateOptional.get());
            trg.setCreateDate(date);
        }

        dateOptional = Optional.ofNullable(src.getSubmitDate());
        if (dateOptional.isPresent()) {
            date = dateFormat.parse(dateOptional.get());
            trg.setSubmitDate(date);

         }
    } catch (ParseException e) {
        throw new BadRequestError(ErrorMessages.INVALID_DATE_STRING);
    }

但是当我使用ifPresent并在其中传递匿名函数时。像下面这样。这样代码可以更紧凑。

   Optional.ofNullable(src.getCreateDate()).ifPresent(createDate -> 
   trg.setCreateDate(dateFormat.parse(createDate)));

IDE建议我用try catch包围您的代码。即使这样做了,它还是再次要求在同一行上。

  try {
            Optional.ofNullable(src.getCreateDate()).ifPresent(createDate -> trg.setCreateDate(dateFormat.parse(createDate)));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

这是某种语言默认值,还是Java中使用的默认匿名函数,还是某种范围问题。

如果是,为什么IDE感到困惑?还有其他解决方法吗? 有人可以解释这种行为吗?

0 个答案:

没有答案