我在使用Java 8 Optional的地方有一些代码,当我没有得到所需的结果时,我想在其中将log一个错误。

如以下示例所示,我在尝试登录commented的一行上显示Error Message:

    @PutMapping("/organs/{id}")
    public Organ updateorgan(@PathVariable(value = "id") Long organId,
                                           @Valid @RequestBody Organ organDetails) {

        Organ organ = organRepository.findById(organId)
                .orElseThrow(() ->
                   // LOG.log(Level.SEVERE,"Organ with id "+organId + "not found");
                   new ResourceNotFoundException("organ", "id", organId)
                );

        organ.setName(organDetails.getName());
        Organ updatedOrgan = organRepository.save(organ);
        LOG.info("Updated organ details. Response :"+updatedOrgan);
        return updatedOrgan;
    }

附言-我只想使用Java 8方法,而不是常规方法。

提前致谢!

最佳答案

使它成为带有用花括号括起来的主体的lambda和return语句,而不是表达式lambda:

Organ organ = organRepository.findById(organId)
                .orElseThrow(() -> {
                    LOG.log(Level.SEVERE,"Organ with id "+organId + "not found");
                    return new ResourceNotFoundException("organ", "id", organId);
                });

10-02 22:45