java - Spring MVC - 服务应该返回可选还是抛出异常?

标签 java spring spring-mvc

我有方法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/

相关文章:

java - 富人脸树问题

java - Jlist 的换行/字符串生成器的下一行

JavaFX 自动缩放

java - Spring MVC 3 JSF 2 与 Maven

spring - 在运行时未调用自定义 spring 安全过滤器

xml - 如何在 Spring MVC 中配置自定义 MediaType?

java - hibernate 中的对象不会转换

java - Spring Boot 不加载静态资源

java - 尝试显示被服务器端命令隐藏的 gidview

java - 两种身份验证机制 : Kerberos and HTTP basic