1. NullPointerException
NullPointerException은 객체가 null인데 해당 객체의 메서드를 호출하거나 필드에 접근하려고 시도할 때 발생합니다. 이는 Java에서 매우 일반적인 예외 중 하나로, 프로그램이 실행되는 도중에 런타임 오류로 자주 나타납니다.
예제 코드:
```java
public class NullPointerExample {
public static void main(String[] args) {
String str = null;
try {
System.out.println(str.length());
} catch (NullPointerException e) {
System.out.println("NullPointerException 발생: 객체가 null입니다.");
}
}
}
```
2. ArrayIndexOutOfBoundsException
배열에 존재하지 않는 인덱스로 접근하려고 할 때 ArrayIndexOutOfBoundsException이 발생합니다. 이 예외는 로직 오류로 인한 범위를 초과하는 인덱스 접근 시 나타납니다.
예제 코드:
```java
public class ArrayIndexOutOfBoundsExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
try {
int invalidIndexValue = numbers[3];
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException 발생: 유효하지 않은 인덱스 접근");
}
}
}
```
3. ArithmeticException
ArithmeticException은 산술 연산 중 잘못된 연산, 예를 들어 0으로 나누기를 시도할 때 발생합니다. 이는 계산 로직에 항상 주의해야 함을 의미합니다.
예제 코드:
```java
public class ArithmeticExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("ArithmeticException 발생: 0으로 나누기");
}
}
}
```
4. ClassCastException
ClassCastException은 객체를 호환되지 않는 타입으로 변환하려고 할 때 발생합니다. 이는 주로 다운캐스팅 시 발생할 수 있으며, 올바른 타입 검사 후 캐스팅해야 합니다.
예제 코드:
```java
public class ClassCastExceptionExample {
public static void main(String[] args) {
Object obj = "Hello";
try {
Integer num = (Integer) obj;
} catch (ClassCastException e) {
System.out.println("ClassCastException 발생: 타입캐스팅 실패");
}
}
}
```
5. NumberFormatException
NumberFormatException은 문자열을 숫자로 변환할 수 없을 때 발생합니다. 입력 값이 적절한 형식인지 검증한 후 변환해야 안전합니다.
예제 코드:
```java
public class NumberFormatExceptionExample {
public static void main(String[] args) {
String invalidNumber = "abc";
try {
int number = Integer.parseInt(invalidNumber);
} catch (NumberFormatException e) {
System.out.println("NumberFormatException 발생: 유효하지 않은 숫자 포맷");
}
}
}
```
이러한 기본 Exception들은 Java 프로그래밍 시 반드시 인지하고 있어야 하며, 이를 통해 프로그램의 안정성 및 성능을 향상시킬 수 있습니다. 각 예외를 적절히 처리함으로써 예상치 못한 프로그램 충돌을 방지하고, 사용자에게 더 나은 경험을 제공할 수 있습니다.