代码之家  ›  专栏  ›  技术社区  ›  banan3'14

NoSuchElementException是ResourceNotFoundException的一个好的替代方案吗?

  •  3
  • banan3'14  · 技术社区  · 6 年前

    在SpringBoot和SpringData2.0之前,我使用 org.springframework.boot.context.config.ResourceNotFoundException

    @ExceptionHandler(ResourceNotFoundException.class)
    public HttpStatus handleNotFoundResource() {
        return HttpStatus.NOT_FOUND;
    }
    

    java.util.NoSuchElementException 要在控制器中执行此操作:

    @ExceptionHandler(NoSuchElementException.class)
    public HttpStatus handleNotFoundResource() {
        return HttpStatus.NOT_FOUND;
    }
    

    这是最佳实践吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   davidxxx    6 年前

    NoSuchElementException 比你自定义的例外要广泛得多 ResourceNotFoundException 您定义要在特定情况下抛出的:数据库中没有实体/资源。
    在控制器和存储库层之间,可以有其他方法调用 无接触异常 (收集方法,其他可选的,还有许多其他的)除了 Repository.findXXX().get() .

    可以
    为了防止任何回归,您应该显式地处理 Optional 展开,例如 return Optional.orElseThrown(ResourceNotFoundException::new) .
    如果您想对其进行泛化,可以为您的存储库引入一个执行此处理的基类。