在Java中使用Validate优于手动错误检查的好处?

在Java中使用Validate优于手动错误检查的好处?,java,validation,error-handling,Java,Validation,Error Handling,我正在修改一些代码,我看到一致使用“验证”进行错误检查 Validate.notNull(x,“x不能为空”)和if(null!=x){…}之间有什么区别?两者的优点是什么 编辑:我正在使用org.apache.commons.lang.ValidateValidate不属于Java API,您可能正在使用框架或其他人的类来进行验证 关于好处,这取决于Validate.notNull在内部执行的操作,希望它与名称一致,并且只执行所说的操作,检查值是否不为null。一个好处是,它允许您指定一条错误

我正在修改一些代码,我看到一致使用“验证”进行错误检查

Validate.notNull(x,“x不能为空”)
if(null!=x){…}
之间有什么区别?两者的优点是什么


编辑:我正在使用org.apache.commons.lang.Validate

Validate
不属于Java API,您可能正在使用框架或其他人的类来进行验证


关于好处,这取决于Validate.notNull在内部执行的操作,希望它与名称一致,并且只执行所说的操作,检查值是否不为null。一个好处是,它允许您指定一条错误消息,这样您就可以减少代码的冗余度,但这同样取决于它对该消息的处理方式,它可以将它们添加到消息堆栈中,或者引发未经检查的异常。

Validate
不属于Java API,您可能正在使用框架或其他人的类进行验证


关于好处,这取决于Validate.notNull在内部执行的操作,希望它与名称一致,并且只执行所说的操作,检查值是否不为null。一个好处是,它允许您指定一条错误消息,这样您就可以减少代码的冗余度,但这同样取决于它对该消息的处理方式,它可以将它们添加到消息堆栈中,或者引发未经检查的异常。

编辑:假设您引用的是org.apache.commons.lang.Validate


第一种说法是,使用null参数调用该方法是完全非法的,这是使用该方法的程序员的一个编码错误

第二种说法是,根据x是否为null,存在不同的行为

如果你真的这样做了,它就会变成一个可读性问题:

if(null != x)
{
//...
} else {
  throw new IllegalArgumentException( "x cannot be empty");
}

那尸体要多长时间?为什么非法调用该方法的结果与检查是否非法调用的结果在物理上是分离的?一旦您添加了更多具有不同法律状态的参数,其他人就很难理解。如果您在一开始就明确拒绝所有已知绝对非法的调用,那么对其他程序员来说会更友好。

编辑:假设您引用的是org.apache.commons.lang.Validate


第一种说法是,使用null参数调用该方法是完全非法的,这是使用该方法的程序员的一个编码错误

第二种说法是,根据x是否为null,存在不同的行为

如果你真的这样做了,它就会变成一个可读性问题:

if(null != x)
{
//...
} else {
  throw new IllegalArgumentException( "x cannot be empty");
}

那尸体要多长时间?为什么非法调用该方法的结果与检查是否非法调用的结果在物理上是分离的?一旦您添加了更多具有不同法律状态的参数,其他人就很难理解。如果您在一开始就明确拒绝所有已知为绝对非法的调用,那么对其他程序员来说会更友好。

什么是验证?它似乎是某个单元测试框架的某个类。。。我是否正确?方法的签名是什么
notNull
?什么是验证?它似乎是某个单元测试框架的某个类。。。我说的对吗?方法的签名是什么
notNull
?我没有用这种方式理解这个问题,但我认为你的解释是正确的+1我没有用这种方式理解这个问题,但我认为你的解释是正确的+1.