✅ [Java] Checked Exception vs Unchecked Exception 차이점
1️⃣ 예외(Exception)란?
Java에서 예외(Exception) 는 프로그램 실행 중 예상치 못한 상황이 발생할 때 이를 처리하는 메커니즘입니다.
예외는 크게 두 가지로 나뉩니다.
- Checked Exception: 컴파일 시점에 반드시 예외 처리를 해야 하는 예외
- Unchecked Exception: 런타임(Runtime)에 발생하며, 예외 처리가 강제되지 않는 예외
2️⃣ Checked Exception (검사 예외)
- ✔ 컴파일 타임에 체크됨 (Compile-time Exception)
- ✔ 예외 처리가 필수적 (
try-catch
또는throws
사용) - ✔ 파일 I/O, 네트워크 통신, DB 연결과 같은 외부 자원과 관련
✅ 대표적인 Checked Exception 예제
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) {
System.out.println("파일을 찾을 수 없습니다: " + e.getMessage());
}
}
}
🔹 대표적인 Checked Exception 목록
IOException
(파일 읽기/쓰기 오류)SQLException
(데이터베이스 오류)ClassNotFoundException
(클래스 로드 오류)InterruptedException
(스레드 인터럽트 예외)
3️⃣ Unchecked Exception (비검사 예외)
- ✔ 런타임에 발생 (Runtime Exception)
- ✔ 예외 처리가 필수가 아님 (컴파일러에서 체크하지 않음)
- ✔ 잘못된 코드 로직이나 프로그래밍 실수로 발생
✅ 대표적인 Unchecked Exception 예제
public class UncheckedExceptionExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException 발생
}
}
🔹 대표적인 Unchecked Exception 목록
NullPointerException
(null 객체 접근 시 발생)ArrayIndexOutOfBoundsException
(배열 인덱스 초과)ArithmeticException
(0으로 나누기)IllegalArgumentException
(잘못된 인자 전달)
4️⃣ Checked vs Unchecked 예외 차이점 정리
구분 | Checked Exception | Unchecked Exception |
---|---|---|
발생 시점 | 컴파일 시점 (Compile-time) | 실행 시점 (Runtime) |
예외 처리 강제 여부 | 반드시 예외 처리 필수 (try-catch 또는 throws ) |
필수 아님 (개발자가 선택적으로 처리 가능) |
주요 원인 | 외부 자원 접근, IO 작업, DB 연결 | 코드 로직 오류, 프로그래밍 실수 |
대표 예제 | IOException , SQLException , InterruptedException |
NullPointerException , ArrayIndexOutOfBoundsException |
5️⃣ Checked Exception과 Unchecked Exception을 언제 사용할까?
- ✅ Checked Exception 은 예측 가능한 문제(파일, 네트워크, DB 관련) 에 대해 강제적으로 예외 처리를 유도할 때 적합
- ✅ Unchecked Exception 은 개발자의 실수(잘못된 값, 배열 범위 초과, null 참조) 로 인해 발생하는 경우 사용
📌 결론
- ✔ Checked Exception 은 외부 자원 사용 시 예외 처리가 필수
- ✔ Unchecked Exception 은 개발자의 실수로 발생하며, 예외 처리가 강제되지 않음
- ✔ 어떤 예외를 사용할지 고민할 때는 "예외가 반드시 처리되어야 하는가?"를 기준으로 결정
🔗 더 많은 Java 예외 처리 방법이 궁금하다면?
'Java 오류 & 개발 > Java 기본 문법 & 오류' 카테고리의 다른 글
[Java] Optional 클래스 활용법 및 NullPointerException 방지하기 (0) | 2025.03.13 |
---|---|
[Java 기본 문법 & 오류] CheckedException vs UncheckedException 차이점 및 활용법 (1) | 2025.03.13 |
[Java] String vs StringBuilder vs StringBuffer 차이 (0) | 2025.03.12 |
[Java] Checked Exception vs Unchecked Exception 차이 (0) | 2025.03.12 |
[Java] HashMap vs Hashtable 차이점 및 활용법 (1) | 2025.03.12 |