繁体   English   中英

怎么做 Java 可选(如果存在)做某事或抛出?

[英]How to do Java Optional if present do something or else throw?

我想要做的是,如果客户存在则更新客户,但如果没有客户则抛出异常。 但是我找不到正确的 stream function 来做到这一点。 我怎样才能做到这一点?

public Customer update(Customer customer) throws Exception {
        Optional<Customer> customerToUpdate = customerRepository.findById(customer.getId());
        customerToUpdate.ifPresentOrElse(value -> return customerRepository.save(customer),
        throw new Exception("customer not found"));
    }

我无法返回来自 save function 的值,因为它说它是 void 方法并且不期望返回值。

正如 Guillaume F. 已经在评论中所说,你可以在这里使用orElseThrow

Customer customer = customerRepository.findById(customer.getId())
    .orElseThrow(() -> new Exception("customer not found"));
return customerRepository.save(customer);

顺便说一句,避免抛出Exception ,因为该异常范围太广。 使用更具体的类型,例如NotFoundException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM