首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring中,当"get by id“没有找到任何项时,如何优雅地处理Validate.notNull IllegalArgumentException?

在Spring中,当"get by id“没有找到任何项时,如何优雅地处理Validate.notNull IllegalArgumentException?
EN

Stack Overflow用户
提问于 2011-09-17 00:04:34
回答 2查看 834关注 0票数 0

我有一个Spring应用程序,并使用Hibernate实现持久性。

我有一桌车。每辆车都有一个唯一的ID。

我的应用程序中有一个网页列出了所有的车辆(www.example.com/ vehicles )。单击链接可以通过车辆ID的GET参数(www.example.com/vehicles?id=1234)访问该车辆的详细信息页。

这一切都很好,因为如果从表中删除车辆,该车辆将不再出现在列出所有车辆的页面上,因此没有可单击的链接。

但是,如果有人提供了一个不存在的车辆的id (例如,他们已经标记了某一特定车辆的路径,但该车辆已经被删除-)。www.example.com/vehicles?id=1234)而且该车辆已不在数据库中,有一个例外。

代码语言:javascript
运行
复制
Vehicle vehicle = vehicleDAO.findById(id);
Validate.notNull(vehicle, "There is no vehicle by this ID.");

,我的控制器将到达这几行,并将抛出一个IllegalArgumentException在线上与Validate.notNull。我如何编写一个站点范围的处理程序,以便优雅地告诉网站访问者Validate.notNull语句中显示的消息?

我认为Validate.notNull语句在我的代码中很有用,我希望将它们的消息一直发送到浏览器窗口,这样访问者就不会只看到一些通用的500个错误页面。

这不仅适用于我的车桌,也适用于任何东西。

如果有一段代码能很好地处理整个站点上所有控制器的这个问题,那就太好了。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-09-17 00:18:19

我觉得你不应该那样做。您要做的是处理所有在控制器之外传播的IllegalArgumentExceptions,前提是它们都可以/应该向最终用户报告。这不是很好的实践,因为Spring (和其他库)在各种事情上都使用这个例外。

你需要治疗这是个特例。编写一个特殊的验证器来测试已删除的车辆情况,并让它抛出一个自定义异常。然后要么在控制器中显式地处理这一点,要么在更一般的情况下处理。

票数 0
EN

Stack Overflow用户

发布于 2011-09-17 13:01:47

您应该在服务层检查id的正确性。如果id不正确,则抛出自定义异常并处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7451521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档