Java中IllegalArgumentException非法参数异常的排查
在Java开发中,IllegalArgumentException
(非法参数异常)是最常见的运行时异常之一,通常表示方法或构造函数接收了不符合预期的参数。本文基于CSDN社区技术文章,结合实际案例与代码演示,总结系统化排查与修复方案。
一、异常溯源:典型触发场景
1. 参数类型不匹配
public void processNumber(Integer number) {
// 错误示例:传递String类型
processNumber("123"); // 抛出ClassCastException或IllegalArgumentException
}
2. 参数值超出范围
public void setAge(int age) {
if (age < 0 || age > 150) {
throw new IllegalArgumentException("年龄必须在0-150之间");
}
// 错误调用:setAge(-5);
}
3. 空值参数传递
public void printName(String name) {
// 错误示例:未检查null
System.out.println(name.toUpperCase()); // NullPointerException或IllegalArgumentException
}
4. 枚举值非法
public enum Status {
ACTIVE, INACTIVE }
public void updateStatus(Status status) {
// 错误调用:updateStatus(null) 或非枚举值
}
5. 业务规则违反
public void bookFlight(String passportNumber, Date departureDate) {
if (departureDate.before(new Date())) {
throw new IllegalArgumentException("出发日期不能早于当前时间");
}
}