【发布时间】:2013-07-12 17:20:23
【问题描述】:
我想对我的方法参数进行空检查,比如参数不应该为空。可以在我的 Java 代码中使用类似 assertNotNull("Map should not be null", filePaths); 的东西吗?
我尽量避免
if(filePaths == null){
throw new IllegalArgumentException("Maps cannot be null");
}
只是为了让我的代码免受所有这些 null 检查的影响。我知道我可以编写自己的 Validator 类并重载了 notNull 方法,但是是否存在一些现有且易于使用的东西,无需重新发明轮子。
我看到使用 JUnit Assert 的唯一缺点是它会抛出 AssertionError 而不是 IllegalArgumentException 等等。
【问题讨论】:
-
为什么不用 Guava 的
Preconditions? -
另一种选择是使用 Java 语言提供的 assert 关键字——例如,assert null != filepaths : "Maps cannot be null"。这些检查可以在启动时打开或关闭。
-
@AndyThomas:不要在公共方法中使用断言来检查参数。来自Documentation。如果断言被禁用,它将永远不会被调用
-
@LouisWasserman:感谢您的建议,我们目前没有使用
Guava,但看起来值得一试 -
@Learner - 好点。在某些特殊情况下,我将 assert() 用于非公共方法。但通常最好坚持单一方法,例如 Louis 对 Guava 的前提条件的建议。
标签: java exception exception-handling junit illegalargumentexception