采取这种方法
/**
* @return List of group IDs the person belongs to
*
*/
public List<String> getGroups() {
if (this.getId().equals("")) return null;
}
我想抛出异常而不是返回null,当没有设置重要参数/依赖项时抛出的异常是什么?
答案 0 :(得分:82)
如果参数/参数是从外部控制的,我会使用IllegalArgumentException
;如果在错误的时刻(状态)调用该方法,则使用IllegalStateException
。在你的具体情况下,我认为这是后者。一个(可疑的)替代方案是NullPointerException
。
然而,这应该在@throws
中明确记录,以便用户理解原因。
答案 1 :(得分:5)
答案 2 :(得分:3)
我会使用IllegalStateException,因为id是所有者的状态。如果id已作为参数传递,则IllegalArgumentException将是正确的。
答案 3 :(得分:3)
如果无法确保始终设置id(例如,通过在构造函数中要求它,可以检查是否已经传递了有效的id),那么我认为其他建议要抛出IllegalStateException是正确的。但是,如果可能的话,最好尽量确保你的对象不能首先进入这种状态
答案 4 :(得分:2)
您应该只返回一个空列表,而不是抛出异常。如果不满足依赖性/参数,则没有结果。从发布的评论和代码来看,这似乎是预期的行为。如果id为空,则没有附加组,因此是空列表。
答案 5 :(得分:1)
我会通过扩展Exception来创建自己的Exception类型。这样调用函数可以捕获该特定的异常并适当地优雅地处理它。 注意,您可以使用Extends Exception做任何事情,但我更喜欢创建自己的Exception类,因此我可以在异常处理中非常健壮。当然,这取决于你。