我有方法Optional<Product> findProduct(long productId)
在我的ProductDao
类(class)。
- 我的服务类 (
ProductService
) 是否应该传播Optional
并返回Optional<Product>
,然后Controller
检查是否缺席? - 或者也许我的服务类应该检查
Optional
缺席并抛出ProductNotFoundException
?
我使用@ControllerAdvice
和@ExceptionHandler
处理ProductNotFoundException
并返回正确的View
。所以我的异常将在两种解决方案中得到正确处理。
最佳答案
Optional 并不是真正用于处理异常的目的,它的目的是在不破坏程序流程的情况下处理潜在的空值。
您可以在服务类中执行类似的操作
optional.orElseThrow(() -> new RuntimeException("ProductNotFoundException"));
这基本上意味着返回我的可选值,但如果不可用则抛出异常
关于java - Spring MVC - 服务应该返回可选还是抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283605/