丢失重要参数/依赖项时抛出什么exception?
采取这种方法
/** * @return List of group IDs the person belongs to * */ public List<String> getGroups() { if (this.getId().equals("")) return null; }
我想抛出exception,而不是返回null,什么是一个重要的参数/依赖关系没有被设置时抛出exception?
如果参数/参数是从外部控制的,我会使用IllegalArgumentException
,如果方法只是在错误的时刻(状态)被调用,则使用IllegalStateException
。 在你的具体情况下,我认为这是后者。 (可疑)替代方法是NullPointerException
。
这应该在@throws
明确logging,以便用户理解原因。
IllegalStateException如何?
如果不能确保id始终被设置(通过在构造函数中要求它,例如,你可以检查一个有效的id已被传递),那么我认为抛出IllegalStateException的其他build议是正确的。 但如果可能的话,最好先尝试确保你的对象不能进入这个状态
我会使用IllegalStateException,因为id是所有者的状态。 如果id已经作为parameter passing,IllegalArgumentException将是正确的。
而不是抛出一个exception,你应该只是返回一个空的列表。 如果不符合依赖关系/参数,则没有结果。 从发布的评论和代码看来,这是预期的行为。 如果id是空的,那么没有组附加,因此是一个空的列表。
我会通过扩展Exception来创build自己的Exceptiontypes。 通过这种方式调用函数可以捕获特定的exception,并适当地处理它。 注意,你可以对扩展exception做任何事情,但我更喜欢创build自己的exception类,所以我可以在exception处理中非常强大。 当然,这当然取决于你。
- 在.NET中对于无效或意外的参数应该抛出什么exception?
- 以DRY方式将多个错误类传递给ruby的救援条款
- Javascriptexception堆栈跟踪
- android.content.res.Resources $ NotFoundException:String中的资源ID致命exception
- TAP全局exception处理程序
- Matcher抛出IllegalStateException的原因,当没有“匹配”的方法被调用
- locking的对象是否locking,如果内部发生exception?
- 在现代Python中声明自定义exception的正确方法是什么?
- 有没有C#的InvalidOperationException Java的等价物?