我已经在寻找这个问题的答案,并找到了以下建议:
- 如果您总是期望找到一个值,那么如果它丢失则抛出异常。异常意味着存在问题。如果该值可能丢失或存在,并且两者都对应用程序逻辑有效,则返回 null。
- 只有当它确实是错误时才抛出异常。如果对象的预期行为不存在,则返回 null。
但是在我的(如此随意的)案例中我应该如何解释它们:我的网络应用程序控制器正在接收请求以显示具有特定 ID 的用户的详细信息。控制器要求服务层获取用户,然后服务返回对象,如果找到的话。如果不是,则发出到“默认”位置的重定向。
如果有人在请求 URL 中传递了无效的用户 ID,我该怎么办?我应该将其视为“预期行为”并将 null 返回给控制器,还是应该将其称为“问题或意外行为”,从而在服务方法中引发异常并在控制器内部捕获?
从技术上讲,这毕竟不是很大的区别,但我想按照标准的惯例以正确的方式做到这一点。在此先感谢您的任何建议。
编辑:我假设应用程序生成的 URL 是有效且存在的 - 当用户单击时,应该找到具有特定 ID 的用户。我想知道如何处理一种情况,当用户尝试通过在浏览器的地址栏中手动输入 URL 来使用错误的(不存在的)用户 ID 访问 URL 时。