본문 바로가기

Java 오류 & 개발/Java 기본 문법 & 오류

[Java] Checked Exception vs Unchecked Exception 차이점

[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 오류 해결 방법도 함께 확인하세요! 🚀