```markdown
在 Java 编程中,java.lang.Illegal
类通常出现在处理异常时,尤其是在无效或不合法的操作过程中。IllegalArgumentException
和 IllegalStateException
是 java.lang.Illegal
异常类的两个主要示例。了解这些异常类型的用途,有助于开发者编写出更健壮和易于维护的代码。
IllegalArgumentException
是 Java 标准库中的一种运行时异常(unchecked exception)。当方法接收到一个非法参数时,通常会抛出这个异常。
```java public class IllegalArgumentExample { public static void main(String[] args) { try { setAge(-1); } catch (IllegalArgumentException e) { System.out.println("Illegal Argument: " + e.getMessage()); } }
public static void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
System.out.println("Age is: " + age);
}
} ```
Illegal Argument: Age cannot be negative
在上面的例子中,setAge
方法在接收到负数作为年龄时抛出了 IllegalArgumentException
异常,表明传递给方法的参数不合法。
IllegalStateException
也是一种运行时异常,表示对象的状态不符合方法执行的要求。与 IllegalArgumentException
不同,IllegalStateException
通常用于表示对象处于一个不合法或不可预期的状态,而非传入的参数有问题。
IllegalStateException
。```java public class IllegalStateExample { private boolean isStarted = false;
public static void main(String[] args) {
IllegalStateExample example = new IllegalStateExample();
try {
example.startProcess();
example.startProcess(); // 这里再次启动会抛出异常
} catch (IllegalStateException e) {
System.out.println("Illegal State: " + e.getMessage());
}
}
public void startProcess() {
if (isStarted) {
throw new IllegalStateException("Process already started");
}
isStarted = true;
System.out.println("Process started");
}
} ```
Process started
Illegal State: Process already started
在上述例子中,startProcess
方法通过检查 isStarted
标志位来判断进程是否已经启动,如果已经启动,则抛出 IllegalStateException
。
IllegalArgumentException
用于指示方法接收到非法参数。IllegalStateException
用于指示对象处于不合法的状态。通过合理使用这些异常,可以增强代码的鲁棒性,并且帮助开发者更好地定位和修复潜在的逻辑错误。在开发过程中,适当地抛出这些异常,可以提升程序的健壮性和易读性。 ```