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



假设我们有一个服务方法getById(Long id),它根据实体的id返回一个实体。在id为空的情况下,正确的操作是什么?

扔IllegalArgumentException吗?

抛出NullPointerException吗?(番石榴先决条件。checkNotNull做这个)

返回null吗?

既然永远不可能有一个id == null的实体,返回null似乎没有那么糟糕?我的意思是,如果id不存在,该方法无论如何都会返回null。

先决条件是很好的一行代码,但是在这种情况下抛出NullPointerException似乎有些极端。

这里的"最佳实践"是什么?

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

返回null隐藏了错误,或者使它更加模糊。抛出异常可以及早发现错误,并提供清晰的错误信息,从而尽早修复错误,最终使应用程序更加健壮。

对于为空的非空参数的约定是抛出NullPointerException。我也会这么做的

没有nullid记录,因此如果给定没有记录的"有效"id,该方法应该做任何事情。这就是最小意外原则。消费者将对未找到的情况进行编码,因此它们应该被覆盖。

有一件事,没有被持久化的新记录的id是多少?这可能会导致你偏离你的行为,如果它恰好是null

最好使用NullPointerException,因为在实体集合中没有找到ID中的值

相关内容

  • 没有找到相关文章

最新更新