Java报错”IllegalArgumentException”的原因以及解决办法

  • Post category:Java

当Java方法中传递的参数不符合方法的预期时就会抛出”IllegalArgumentException”异常。这通常发生在方法参数的类型不匹配、参数值不在合法的范围内、参数为空(est null)时出现。

下面提供两个示例说明:

  1. 类型不匹配

例如,我们有一个方法接受数字类型n(double),在我们调用这个方法时传入了字符串类型的值”abc”。在这种情况下,方法会抛出”IllegalArgumentException”。

public static double squareRoot(double n) {
   if (n < 0) {
      throw new IllegalArgumentException("n must be positive");
   }
   return Math.sqrt(n);
 }

//调用方法,传入错误类型的参数值
String invalid = "abc";
double result = squareRoot(invalid);

解决办法是确保传递给方法的参数与方法的预期参数类型相匹配。在这种情况下,我们需要将参数值”abc”转换为数字类型的值。

//将错误类型的参数值转换为数字类型的值
String invalid = "abc";
double result = squareRoot(Double.parseDouble(invalid));
  1. 参数为空

例如,我们有一个方法接受一个字符串(String)参数,我们传递了一个空值(null)。

public static void printName(String name) {
   if (name == null) {
      throw new IllegalArgumentException("name must not be null");
   }
   System.out.println("Hello, " + name);
 }

//调用方法,传入错误的参数值
String nullName = null;
printName(nullName);

解决办法是确保传递给方法的参数不为空。在这种情况下,我们需要提供非空的字符串参数。

//将错误的参数值赋值为非空的字符串
String nullName = null;
printName("John");