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