`IllegalArgumentException`은 메서드에 잘못된 인수가 전달될 때 자바에서 발생하는 예외입니다. 즉, 메서드에 전달된 인수가 해당 메서드가 수행될 수 없는 값이거나 유효하지 않은 값일 때 발생합니다.
**발생 원인:**
`IllegalArgumentException`은 일반적으로 다음과 같은 상황에서 발생합니다:
1. **메서드에 전달된 인수가 예상 범위를 벗어날 때**: 메서드는 특정한 범위의 값을 기대하고, 이 범위를 벗어난 인수가 전달될 때 예외가 발생합니다.
```java
public void doSomething(int value) {
if (value < 0 || value > 100) {
throw new IllegalArgumentException("value는 0부터 100 사이의 값이어야 합니다.");
}
// 메서드 로직 처리
}
doSomething(120); // 이 부분에서 IllegalArgumentException이 발생합니다.
```
2. **메서드에 예상하지 못한 형식의 인수가 전달될 때**: 메서드가 특정한 데이터 형식의 인수를 필요로 하지만, 다른 형식의 인수가 전달되면 예외가 발생합니다.
```java
public void doSomething(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("name은 비어있을 수 없습니다.");
}
// 메서드 로직 처리
}
doSomething(42); // 이 부분에서 IllegalArgumentException이 발생합니다.
```
**해결 방법:**
`IllegalArgumentException`을 피하기 위해서는 메서드에 유효한 인수가 전달되도록 해야 합니다. 이를 위해 다음과 같은 해결 방법을 사용할 수 있습니다:
1. **전달된 인수의 유효성 검사**: 메서드에서 인수를 사용하기 전에 인수가 예상한 범위 내에 있는지 확인합니다. 필요한 유효성 검사를 수행하여 예외를 미리 방지할 수 있습니다.
```java
public void doSomething(int value) {
if (value < 0 || value > 100) {
throw new IllegalArgumentException("value는 0부터 100 사이의 값이어야 합니다.");
}
// 메서드 로직 처리
}
```
2. **올바른 데이터 형식 사용**: 메서드에서 요구하는 데이터 형식과 일치하는 인수를 전달합니다.
```java
public void doSomething(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("name은 비어있을 수 없습니다.");
}
// 메서드 로직 처리
}
```
올바른 인수가 메서드로 전달되도록 유효성을 검사하고 필요한 예외를 미리 방지함으로써 `IllegalArgumentException`을 효과적으로 처리할 수 있습니다. 이를 통해 메서드의 안정성과 예외 처리를 향상시킬 수 있습니다.
'JAVA > EXCEPTION' 카테고리의 다른 글
InterruptedException 발생원인과 해결방법 (0) | 2023.07.21 |
---|---|
IllegalArgumentException Cause and solution (0) | 2023.07.21 |
ArrayIndexOutOfBoundsException 발생원인과 해결방법 (0) | 2023.07.21 |
ArrayIndexOutOfBoundsException Cause and solution (0) | 2023.07.21 |
NullPointerException 발생원인과 해결방법 (0) | 2023.07.21 |