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

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

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

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"));
    }

我无法 return 来自保存函数的值,因为它说它是无效方法并且不期望 return 值。

正如 Guillaume F. 在评论中所说,您可以在此处使用 orElseThrow

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

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