..
자바 예외 처리: Checked vs Unchecked Exception 차이점
1. Checked Exception (Exception)
Checked Exception은 이름 그대로 컴파일러가 컴파일 시점에 예외 처리 여부를 체크하는 예외입니다.
- 강제성: 개발자는 이 예외를 반드시 명시적으로 처리해야 합니다. (
try-catch로 감싸거나, 메소드 선언부에throws키워드를 사용) - 발생 원인: 주로 애플리케이션의 제어 밖인 ‘외부 환경’과의 상호작용에서 발생합니다.
주요 사례:
- 사용자가 잘못된 파일 경로를 입력한 경우 (
FileNotFoundException) - 네트워크 문제나 DB 연결 실패 (
IOException,SQLException)
2. Unchecked Exception (RuntimeException)
Unchecked Exception은 런타임 시점에 발생하는 예외로, 컴파일러가 예외 처리를 강제하지 않습니다.
- 강제성: 예외 처리는 선택 사항입니다. (
try-catch를 써도 되고 안 써도 컴파일은 됩니다.) - 발생 원인: 주로 개발자의 실수로 인한 로그 오류나 검증 누락 등 코드 내부적인 문제에서 발생합니다.
주요 사례:
- 객체가 null인데 접근한 경우 (
NullPointerException) - 숫자를 0으로 나누려는 경우 (
ArithmeticException) - 배열의 인덱스 범위를 벗어난 경우 (
ArrayIndexOutOfBoundsException)
한눈에 비교하기
| 구분 | Checked Exception | Unchecked Exception |
|---|---|---|
| 검출 시점 | 컴파일 시점 | 런타임 시점 |
| 처리 강제 여부 | 필수 (Y) | 선택 (N) |
| 상속 계층 | Exception 상속 |
RuntimeException 상속 |
| 대응 방법 | 외부 환경 예외 (파일, DB 등) | 프로그래밍 논리 오류 (NPE 등) |
Checked Exception은 “내가 조절할 수 없는 상황에 대한 대비책”이고, Unchecked Exception은 “내 코드의 빈틈을 메우는 과정”이라고 이해하면 명확합니다.