gpt4 book ai didi

java - 在 Spring MVC 中,当 "get by id"找不到项目时,如何优雅地处理 Validate.notNull IllegalArgumentException?

转载 作者:行者123 更新时间:2023-12-03 09:00:22 25 4
gpt4 key购买 nike

我有一个 Spring MVC Web 应用程序并使用 Hibernate 进行持久性。

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

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

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

但是,如果有人提供了不存在的车辆的 ID(例如,他们已将特定车辆的路径添加为书签,但该车辆已被删除 - 例如 www.example.com/vehicles?id=1234)并且该车辆不再在数据库中,出现异常。

Vehicle vehicle = vehicleDAO.findById(id);
Validate.notNull(vehicle, "There is no vehicle by this ID.");

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


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

这不仅适用于我的 Vehicles 表,也适用于任何东西。

如果只有一点代码可以优雅地为整个站点的所有 Controller 处理这个问题,那就太好了。

谢谢!

最佳答案

我认为你不应该那样做。您要做的是处理所有从 Controller 传播的 IllegalArgumentExceptions,假设它们都可以/应该报告给最终用户。这不是正确的做法,因为 Spring(和其他库)在各种事情上都使用该异常。

你需要对待这是一个特例。编写一个特殊的 validator 来测试已删除的车辆案例,并让它抛出 定制 异常(exception)。然后要么在 Controller 中明确处理,要么更一般地处理。

关于java - 在 Spring MVC 中,当 "get by id"找不到项目时,如何优雅地处理 Validate.notNull IllegalArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451521/

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