..

자바 예외 처리: 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은 “내 코드의 빈틈을 메우는 과정”이라고 이해하면 명확합니다.