자바에서 예외(Exception)는 크게 Checked Exception과 Unchecked Exception으로 나뉩니다.
1. Checked Exception
개념
- 컴파일 시점에 반드시 예외 처리를 해야 하는 예외
- try-catch 문으로 처리하거나 throws 키워드를 사용하여 호출자에게 예외 처리를 위임해야 함
- 예외 처리를 하지 않으면 컴파일 오류 발생
대표적인 Checked Exception
- IOException → 파일 입출력 시 발생
- SQLException → 데이터베이스 관련 예외
- ClassNotFoundException → 클래스 로드 실패
- InterruptedException → 스레드 인터럽트 발생
예제
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
File file = new File("test.txt");
FileReader fr = new FileReader(file); // FileNotFoundException 발생 가능
} catch (IOException e) { // IOException을 반드시 처리해야 함
System.out.println("파일을 찾을 수 없습니다: " + e.getMessage());
}
}
}
2. Unchecked Exception
개념
- 런타임(Runtime)에서 발생하는 예외
- 컴파일 시점에서는 예외 처리를 강제하지 않음
- 대부분 프로그래머의 실수로 인해 발생
대표적인 Unchecked Exception
- NullPointerException → null 객체에 접근
- ArrayIndexOutOfBoundsException → 배열의 인덱스를 초과
- ArithmeticException → 0으로 나누기
- ClassCastException → 잘못된 형 변환
예제
public class UncheckedExceptionExample {
public static void main(String[] args) {
String text = null;
System.out.println(text.length()); // NullPointerException 발생
}
}
3. Checked vs Unchecked 차이점 비교
구분 | Checked Exception | Unchecked Exception |
예외 처리 여부 | 반드시 처리해야 함 (try-catch 또는 throws) | 강제되지 않음 (개발자가 직접 처리 가능) |
컴파일 단계 | 예외 처리를 하지 않으면 컴파일 오류 발생 | 컴파일 단계에서 예외 검사 없음 |
발생 시점 | 파일 I/O, 네트워크, DB 작업 등 외부 시스템과 연관된 예외 | null, 배열 범위 초과, 0 나누기 등 코드 문제로 발생 |
예제 | IOException, SQLException, ClassNotFoundException | NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException |
4. 언제 Checked vs Unchecked를 사용해야 할까?
1) Checked Exception을 사용할 때
- 외부 시스템(파일, DB, 네트워크 등)과 관련된 오류를 예상할 수 있는 경우
- 개발자가 반드시 예외 처리를 강제해야 하는 경우
2) Unchecked Exception을 사용할 때
- 프로그래머의 실수로 인해 발생할 가능성이 높은 경우
- NullPointerException, IndexOutOfBoundsException 등 논리적인 오류가 주된 원인인 경우
5. 요약
- Checked Exception → 개발자가 반드시 처리해야 하는 예외, 컴파일 할 때 예외에 대한 처리를 강제.
- Unchecked Exception → 프로그램 로직 오류로 발생하는 예외, 강제 예외 처리는 필요 없음, 예외에 대한 처리를 강제하지 않음.
Checked Exception은 외부 시스템과의 통신 오류, Unchecked Exception은 개발자가 잘못된 코드를 작성했을 때 발생한다고 기억하면 됩니다!
'BackEnd > JAVA' 카테고리의 다른 글
[JAVA] 정규식 사용 정리 (0) | 2025.02.20 |
---|---|
[JAVA] Stream API Collect 메소드 (0) | 2025.02.20 |
[JAVA] Stream API 생성과 사용법 정리 (2) | 2025.02.15 |