当Java方法中传递的参数不符合方法的预期时就会抛出”IllegalArgumentException”异常。这通常发生在方法参数的类型不匹配、参数值不在合法的范围内、参数为空(est null)时出现。
下面提供两个示例说明:
- 类型不匹配
例如,我们有一个方法接受数字类型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));
- 参数为空
例如,我们有一个方法接受一个字符串(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");