gpt4 book ai didi

java - NoSuchElementException 是 ResourceNotFoundException 的一个很好的替代品吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:31 27 4
gpt4 key购买 nike

在 Spring-Boot 和 Spring-Data 2.0 之前,我使用 org.springframework.boot.context.config.ResourceNotFoundException 检查实体实例是否在数据库中。我在 Controller 中使用了以下异常处理程序:

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

现在,因为存储库方法返回一个可选的,我使用 java.util.NoSuchElementException 在 Controller 中完成这项工作:

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

这是最佳实践吗?

最佳答案

NoSuchElementException 比您定义为在特定情况下抛出的自定义异常 ResourceNotFoundException 范围更广:数据库中没有实体/资源。
在 Controller 和存储库层之间,除了 Repository.findXXX().get()

所以你的想法可能会产生不良的副作用。
为防止任何回归,您应该显式处理 Optional 解包,例如 return Optional.orElseThrown(ResourceNotFoundException::new)
如果您想概括它,您可以为您的存储库引入一个基类来执行此处理。

关于java - NoSuchElementException 是 ResourceNotFoundException 的一个很好的替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com