我的Optional<Product> findProduct(long productId)
类中有方法ProductDao
。
ProductService
)是否应传播Optional
并返回Optional<Product>
,然后Controller
检查是否不存在?Optional
是否不存在并抛出ProductNotFoundException
?我使用@ControllerAdvice
和@ExceptionHandler
处理ProductNotFoundException
并返回正确的View
。因此,我的异常将在两种解决方案中得到正确处理。
答案 0 :(得分:0)
Optional并不是真正用于处理异常的目的,而是用于在不中断程序流程的情况下处理潜在的null的。
您可以在服务类中执行类似的操作
optional.orElseThrow(() -> new RuntimeException("ProductNotFoundException"));
这基本上意味着返回我的可选值,但如果不可用则抛出异常