服务层:如果查询参数为null,返回什么?

假设我们有一个服务方法getById(Long id) ,它返回一个基于它的id的实体。 在id为null的情况下应该采取的适当措施是什么?

抛出IllegalArgumentException?

抛出NullPointerException? (番石榴Preconditions.checkNotNull这样做)

返回null?

既然不会有id == null的实体,返回null看起来并不好? 我的意思是如果id不存在,那么该方法无论如何都会返回null。

先决条件是很好的单线程,但在这种情况下抛出一个NullPointerException似乎极端。

这里最好的做法是什么?


将null传递给这种方法表示一个错误。 没有人会想要找到具有空ID的实体,因为不存在这样的事物。 所以这可能意味着在UI层中存在绑定问题,或者调用者忘记在其窗体中添加隐藏的ID字段,或者其他什么。

返回null隐藏该错误,或​​使其更加模糊。 抛出异常提前发现错误,并提供明确的错误消息,这可以提前修复它,并且使应用程序更加稳定。

非空的参数为null的约定是抛出一个NullPointerException。 这就是我要做的。


没有idnull记录,因此如果给定一个没有记录的“有效” id ,该方法应该做它所做的任何事情。 这是最不让人惊讶的原则。 消费者将编码为未找到的情况,因此应该将其涵盖。

有一件事,新记录的id还没有被保存下来? 这可能会导致你偏离你的行为,如果它碰巧是null


总是最好使用NullPointerException因为在Entity集合中没有找到ID中的值。

链接地址: http://www.djcxy.com/p/76231.html

上一篇: Service layer: What to return if query argument is null?

下一篇: Guava preconditions checkNull, checkArgument