if语句应返回“ IllegalArgumentException”,但返回空字符串

时间:2019-06-13 08:25:35

标签: java

下面的if语句应返回字符串“ IllegalArgumentException”,但事实证明它返回的是空字符串。

我试图设置一个String变量输出以将所需的String存储在if语句中。

public static String starString(int n){
  if(n < 0){
    String output = "";
    return output = "IllegalArgumentException";
  } else {
    String stars = "";
    for(int i = 0; i < Math.pow(2, n); i++){
      stars += "*";
    }
    return stars;
  }
}

我希望starString(-1)返回

  

exception:IllegalArgumentException

但是错误消息是一个空字符串。

2 个答案:

答案 0 :(得分:1)

以下语句是多余的:

  

返回输出=“ IllegalArgumentException”;

相反,您应该只返回String或引发异常。

  

返回“ IllegalArgumentException”;

OR

  

抛出新的IllegalArgumentException(“ your message”);

对于为什么它返回none是不可理解的。因为我已经运行了代码here,并且可以通过将参数设置为-1

来正常工作

答案 1 :(得分:1)

  1. 请勿返回字符串"IllegalArgumentException",而应使用throw new IllegalArgumentException("n should be non-negative")。请注意,异常消息应始终是有意义且非空的。您可以设置适当的IDEA检查,突出显示创建没有消息的异常。
  2. 请勿使用冗余的else,这将为您节省一个缩进级别。
  3. 因此请勿使用赋值运算结果。尽管该语言允许这样做,但在大多数情况下阅读和理解并不是显而易见的。您也可以设置IDEA检查来避免这种情况。