Spring MVC-服务应该返回Optional还是引发异常?

时间:2019-03-21 15:10:42

标签: java spring spring-mvc

我的Optional<Product> findProduct(long productId)类中有方法ProductDao

  • 我的服务类(ProductService)是否应传播Optional并返回Optional<Product>,然后Controller检查是否不存在?
  • 或者我的服务类别可能应该检查Optional是否不存在并抛出ProductNotFoundException

我使用@ControllerAdvice@ExceptionHandler处理ProductNotFoundException并返回正确的View。因此,我的异常将在两种解决方案中得到正确处理。

1 个答案:

答案 0 :(得分:0)

Optional并不是真正用于处理异常的目的,而是用于在不中断程序流程的情况下处理潜在的null的。

您可以在服务类中执行类似的操作

optional.orElseThrow(() -> new RuntimeException("ProductNotFoundException"));

这基本上意味着返回我的可选值,但如果不可用则抛出异常