作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一个服务方法 getById(Long id)
,它根据 id 返回一个实体。如果 id 为空,正确的操作是什么?
抛出IllegalArgumentException?
抛出NullPointerException? ( Guava Preconditions.checkNotNull 执行此操作)
返回空?
既然不可能存在 id == null 的实体,那么返回 null 似乎也没有那么糟糕?我的意思是,如果 id 不存在,该方法无论如何都会返回 null。
先决条件是很好的一句台词,但在这种情况下抛出 NullPointerException 似乎很极端。
这里的“最佳实践”是什么?
最佳答案
向此类方法传递 null 表示存在错误。没有人会想要找到 ID 为空的实体,因为这样的东西不可能存在。所以这可能意味着 UI 层存在绑定(bind)问题,或者调用者忘记在其表单中添加隐藏的 ID 字段,或者其他什么。
返回 null 会隐藏该错误,或者使其更加模糊。抛出异常可以尽早发现错误,并提供清晰的错误消息,从而可以及早修复它,并最终使应用程序更加健壮。
不可为 null 的参数为 null 的约定是抛出 NullPointerException。我就是这么做的。
关于java - 服务层: What to return if query argument is null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15447437/
我是一名优秀的程序员,十分优秀!