Java SpringMVC-服务应该返回可选的还是引发异常?
在我的Java SpringMVC-服务应该返回可选的还是引发异常?,java,spring,spring-mvc,Java,Spring,Spring Mvc,在我的ProductDao类中有方法可选的findProduct(long productId) 我的服务类(ProductService)是否应该传播Optional并返回Optional,然后Controller检查是否不存在 或者我的服务类应该检查Optional是否不存在,并抛出ProductNotFoundException 我使用@ControllerAdvice和@ExceptionHandler处理ProductNotFoundException并返回正确的视图。因此,我的异
ProductDao
类中有方法可选的findProduct(long productId)
- 我的服务类(
)是否应该传播ProductService
并返回Optional
,然后Optional
检查是否不存在Controller
- 或者我的服务类应该检查
是否不存在,并抛出Optional
ProductNotFoundException
我使用
@ControllerAdvice
和@ExceptionHandler
处理ProductNotFoundException
并返回正确的视图。因此,我的异常在这两种解决方案中都会得到正确处理。Optional并非真正用于处理异常,而是用于在不中断程序流的情况下处理潜在的空值
你可以在服务课上做类似的事情
optional.orElseThrow(() -> new RuntimeException("ProductNotFoundException"));
这基本上意味着返回我的可选值,但如果它不可用则抛出异常标准if-else的漂亮快捷方式为可选。我以前不知道这个。回到我的问题,如果我理解正确,您建议在服务类而不是控制器中抛出en异常?