登录Java 8可选

我有一些使用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;
    }

P.S-我只想使用Java 8方法,而不是传统方法。

提前谢谢!

beibei0524 回答:登录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);
                });
,

您必须使用return

Organ organ = organRepository.findById(organId)
        .orElseThrow(() -> {
            LOG.log(Level.SEVERE,"Organ with id "+organId + "not found");
            return new ResourceNotFoundException("organ",organId);
        });
本文链接:https://www.f2er.com/3074942.html

大家都在问