gpt4 book ai didi

java - 返回 null 或再次抛出异常

转载 作者:搜寻专家 更新时间:2023-11-01 02:54:17 25 4
gpt4 key购买 nike

我已经在寻找这个问题的答案,并且找到了以下建议:

  1. 如果您总是希望找到一个值,那么如果找不到则抛出异常。异常意味着有问题。如果该值可以缺失或存在,并且两者都对应用程序逻辑有效,则返回 null。
  2. 只有在确实存在错误时才抛出异常。如果对象不存在是预期的行为,则返回 null。

但我应该如何在我的(如此随意的)案例中解释它们:我的 Web 应用程序 Controller 正在接收请求以显示具有特定 ID 的用户的详细信息。 Controller 要求服务层获取用户,然后服务返回对象(如果找到)。如果不是,则会发出到“默认”位置的重定向。

如果有人在请求 URL 中传递了无效的用户 ID,我该怎么办?我应该将其视为“预期行为”并将 null 返回给 Controller ,还是应该将其称为“问题或意外行为”并因此在服务方法内抛出异常并在 Controller 内捕获?

从技术上讲,这毕竟没有太大区别,但我想按照标准约定以正确的方式进行操作。提前感谢您的任何建议。

编辑:我假设应用程序生成的 URL 有效且存在 - 当用户单击时,应该找到具有特定 ID 的用户。我想知道如何处理这种情况,当用户尝试通过在浏览器的地址栏中手动输入 URL 来访问具有错误(不存在)用户 ID 的 URL 时。

最佳答案

如果我没理解错的话,包含用户 ID 的请求来自客户端(不受您的控制)。应用您引用的经验法则:无效的用户输入是完全可以预料的情况,不需要异常,而是通过向客户端返回适当的错误消息来优雅地处理空值。

(OTOH 如果请求中的用户 ID 是由另一个应用程序自动生成的/来自数据库等,无效的用户 ID 将是意外的,因此异常(exception)是适当的。)

关于java - 返回 null 或再次抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773999/

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