开发者社区> 问答> 正文

使用ifPresentOrElse lamba函数时返回的异常值

我似乎无法弄清楚为什么Unexpected return value在使用lambda时需要从方法中返回某些内容时在IDE上出现此错误的原因。

public Employee getEmployee(long id) {
repository.findById(id).ifPresentOrElse(
                empDetails -> {
                    return service.buildEmployee(empDetails);
                },
        () -> { throw new ResourceNotFoundException(); }
        );

}

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 17:31:19 1521 0
1 条回答
写回答
取消 提交回答
  • ifPresentOrElse​用于消耗Optional的值(如果存在),否则执行一些其他逻辑。它不能用于返回值或引发异常。

    相反,您可以结合map使用orElseThrow:

    public Employee getEmployee(long id) {
        return repository.findById(id)
                         .map(service::buildEmployee)
                         .orElseThrow(ResourceNotFoundException::new);
    }
    

    回答来源:Stack Overflow

    2020-03-22 17:32:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载