Java 方法返回值与不返回值的方法';T

Java 方法返回值与不返回值的方法';T,java,Java,在编写方法时,几乎总是要检查必须有效的内容 假设如果方法上的price参数无效,则需要抛出一个IllegalArgumentException。因为我想把我的程序分成小块,所以我为它创建了一个私有方法。但是,创建一个名为validatePrize的方法并返回一个布尔值,然后在调用validatePrize方法的if语句中检查该布尔值,然后抛出IllegalArgumentException,这是最佳做法吗 或者,该方法不返回任何内容并抛出异常是否更好?既然您已经知道负值是无效参数,您可以通过执行

在编写方法时,几乎总是要检查必须有效的内容

假设如果方法上的price参数无效,则需要抛出一个
IllegalArgumentException
。因为我想把我的程序分成小块,所以我为它创建了一个私有方法。但是,创建一个名为
validatePrize
的方法并返回一个布尔值,然后在调用
validatePrize
方法的if语句中检查该布尔值,然后抛出IllegalArgumentException,这是最佳做法吗


或者,该方法不返回任何内容并抛出异常是否更好?

既然您已经知道负值是无效参数,您可以通过执行以下操作来防止它:

if(val < 0)
{
  return false;
}
if(val<0)
{
返回false;
}
我在书中读到,防范这种情况是最好的办法。它不符合或不符合“例外标准”。是的,我会返回一个布尔值


尽管有些人喜欢抛出异常,但这取决于您。

我想说,这主要取决于您的偏好。如果您想要一个在调用时不会抛出异常的可重用函数,那么选择带有布尔返回的validatePrize。如果您只是使用它来检查异常,那么请使用引发异常的validatePrize。在这种情况下,我想说引发异常的validatePrize更合适,因为它可以用于从类本身外部处理异常。

如果您将检查委托给一个方法,那么您也可以直接从该方法引发异常,以避免构造函数中的混乱代码。这是番石榴
先决条件使用的典型方法:

this.value = Preconditions.checkNotNull(value, "value must not be null");
如果参数为null,此行将抛出一个带有相关消息的NullPointerException。如果参数不为null,它将返回一个参数,该参数允许在一行中检查和分配参数

如果您感兴趣,以下是:

public static T checkNotNull(T引用,对象错误消息){
if(reference==null){
抛出新的NullPointerException(String.valueOf(errorMessage));
}
返回参考;
}
您可以对您的用例使用类似的方法。

这完全取决于具体情况

首先,
validatePrize
听起来不像一个布尔方法,所以在我看来它不应该返回任何东西


如果你有一堆保护子句,抛出一个异常。如果您需要在应用程序中对相同的属性集合进行验证,请将其作为一种方法,但该方法也可以用作防护的一部分。

我个人的看法是,只有在中出现意外情况时才应抛出异常。空指针可以是this,也可以是ID的负数(应该总是正数)。基本上,异常用于显示程序内部的问题。如果只是验证用户的输入,请使用布尔值和测试。

我仍然是一个noob,但只需将该方法重命名为isPrizeValid(绕过它):P@LewsTherin明显地但这就是它应该做的;它不应该有次要的副作用,而不仅仅是决定它是否有效。我按要求回答了这个问题。
public static <T> T checkNotNull(T reference, Object errorMessage) {
  if (reference == null) {
    throw new NullPointerException(String.valueOf(errorMessage));
  }
  return reference;
}