缺少重要参数/依赖项时抛出什么异常?

时间:2010-03-25 17:36:12

标签: java oop exception

采取这种方法

/**
 * @return List of group IDs the person belongs to
 *
 */
public List<String> getGroups() {
    if (this.getId().equals("")) return null;
}

我想抛出异常而不是返回null,当没有设置重要参数/依赖项时抛出的异常是什么?

6 个答案:

答案 0 :(得分:82)

如果参数/参数是从外部控制的,我会使用IllegalArgumentException;如果在错误的时刻(状态)调用该方法,则使用IllegalStateException。在你的具体情况下,我认为这是后者。一个(可疑的)替代方案是NullPointerException

然而,这应该在@throws中明确记录,以便用户理解原因。

答案 1 :(得分:5)

IllegalStateException怎么样?

答案 2 :(得分:3)

我会使用IllegalStateException,因为id是所有者的状态。如果id已作为参数传递,则IllegalArgumentException将是正确的。

答案 3 :(得分:3)

如果无法确保始终设置id(例如,通过在构造函数中要求它,可以检查是否已经传递了有效的id),那么我认为其他建议要抛出IllegalStateException是正确的。但是,如果可能的话,最好尽量确保你的对象不能首先进入这种状态

答案 4 :(得分:2)

您应该只返回一个空列表,而不是抛出异常。如果不满足依赖性/参数,则没有结果。从发布的评论和代码来看,这似乎是预期的行为。如果id为空,则没有附加组,因此是空列表。

答案 5 :(得分:1)

我会通过扩展Exception来创建自己的Exception类型。这样调用函数可以捕获该特定的异常并适当地优雅地处理它。 注意,您可以使用Extends Exception做任何事情,但我更喜欢创建自己的Exception类,因此我可以在异常处理中非常健壮。当然,这取决于你。