在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。Guava类库中提供了一个作参数检查的工具类–Preconditions类, 该类可以大大地简化我们代码中对于参数的预判断和处理,让我们对方法输入参数的验证实现起来更加简单优雅.
Preconditions里常用的方法:
1 .checkArgument(boolean) :
功能描述:检查boolean是否为真。 用作方法中检查参数
失败时抛出的异常类型: IllegalArgumentException
2.checkNotNull(T):
功能描述:检查value不为null, 直接返回value;
失败时抛出的异常类型:NullPointerException
测试代码
public class PreconditionsTest {
@Test
public void testPreconditions() throws Exception {
getPerson(8, "peida"); // 正确的情况
getPerson(-9, "peida"); // age不满足条件的情况
// getPerson(8, null);// name不满足条件的地方
}
/**
*
* @param age
* age应该满足age>0的条件
* @param neme
* name应该满足,name!=null的条件
* @throws Exception
* @return: void
*/
public static void getPerson(int age, String name) throws Exception {
// 对于age合法性的检查
Preconditions.checkArgument(age > 0, " age 应该满足 age > 0 的条件,age现在的数值为 ", age);
// 对于name的合法性检查
Preconditions.checkNotNull(name, "name 应该满足 name !=null 的条件,name现在的数值为", name);
}
}
测试结果
java.lang.IllegalArgumentException: age 应该满足 age > 0 的条件,age现在的数值为 [-9]
java.lang.NullPointerException: name 应该满足 name !=null 的条件,name现在的数值为 [null]