Spring Boot 如何解决这个ElseThrow异常[已关闭]

kt06eoxx  于 2023-02-16  发布在  Spring
关注(0)|答案(1)|浏览(154)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question

@Override
public CartPojo save(CartPojo cartPojo) throws IOException {
    Cart cart;
    if (cartPojo.getProductid() != null) {
        cart = cartRepo.findById(cartPojo.getProductid().orElseThrow(() -> new RuntimeException("Not Found")));
    } else {
        cart = new Cart();
}

orElseThrow中出现错误,我无法修复它。

wh6knrhe

wh6knrhe1#

您正在检查getProductid()是否为空,但是由于它(看起来像是)返回一个Optional,您应该检查它是否为空。

if (cartPojo.getProductid().isPresent())

作为额外的好处,您可以更优雅地使用Optional类型:

@Override
public CartPojo save(CartPojo cartPojo) throws IOException {
    Cart cart = cartPojo.getProductid()
        .map(cartRepo::findById)
        .orElseGet(Cart::new);
    // ...
}

这与上面的代码实现了相同的功能,但是利用了Optional类型的一些优点,它避免了在不应该发生的情况下抛出RuntimeException

相关问题