IllegalArgumentException用于表示方法接收到不合法参数,如年龄为负或分页大小小于1时抛出,示例中setAge方法对age
IllegalArgumentException 是 Java 中一个常见的运行时异常,用于表明向方法传递了一个不合法或不正确的参数。它继承自 RuntimeException,因此属于非检查异常,不需要强制捕获或声明抛出。
当方法接收到语义上不合理或超出允许范围的参数时,应抛出 IllegalArgumentException。
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
this.age = age;
}
虽然 NullPointerException 更常用于空指针场景,但在方法设计中,若明确要求参数不能为 null,使用 IllegalArgumentException 也是合理选择,尤其在参数校验集中处理时。
public void processName(String name) {
if (name == null || name.trim().isEmpty()) {
thro
w new IllegalArgumentException("姓名不能为空");
}
// 处理逻辑
}
当方法接收一个表示状态、类型或类别的参数,而该参数的值不在预定义集合中时,可抛出此异常。
public void setStatus(String status) {
if (!Arrays.asList("PENDING", "SHIPPED", "DELIVERED").contains(status)) {
throw new IllegalArgumentException("非法的状态值: " + status);
}
this.status = status;
}
当期望参数满足特定格式(如邮箱、电话、日期)但实际不符合时,提前校验并抛出异常有助于快速失败。
public void setEmail(String email) {
if (email == null || !email.matches("^[\\w.-]+@[^@]+$")) {
throw new IllegalArgumentException("邮箱格式不正确");
}
this.email = email;
}
基本上就这些。合理使用 IllegalArgumentException 能让 API 更健壮,提示更清晰,帮助调用者快速发现和修复问题。关键是在入口处做好参数校验,及时反馈错误信息。不复杂但容易忽略。