본문으로 건너뛰기
최서희Frontend Engineer
← 블로그

Backend

[매일메일]자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요.

· 4분 읽기

자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요.


1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)

      • 프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때
      • 예를들어, 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException), 값이 null이 참조변수를 참조(NullPointerException),
      • 존재하지 않는 파일의 이름을 입력(FileNotFoundException) 등등이 있습니다
      • 체크 예외 Checked Exception
        • RuntimeException의 하위 클래스가 아닌 Exception 클래스의 하위 클래스
        • 반드시 에러 처리를 해야하는 특징( try/catch pr throw)을 가지고 있음
        • 예를들어,
          • 존재하지 않는 파일의 이름을 입력(FileNotFoundException)
          • 실수로 클래스의 이름을 잘못 적음(ClassNotFoundException)
      • 언체크 예외 Unchecked Exception
        • RuntimeException의 하위 클래스
        • 체크 예외와는 달리 에러 처리를 강제하지 않음.
        • 예를들어,
          • 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException)
          • 값이 null이 참조변수를 참조(NullPointerException)
        • 만약 언체크 예외가 에러 처리를 강제해야 했다면?
          • try/catch문을 꼭 사용해야 함 → RuntimeException은 개발자들에 의해 실수로 발생하는 것들이기 때문에 에러를 강제하지 않음
    • 에러 Error
      • 에러는 시스템에 비정상적인 상황이 발생했을 경우
      • 예를들어,
        • 메모리 부족(OutofMemoryError)
        • 스택오버플로우(StackOverflowError)→ 복구할 수 없는 것.
      • 개발자가 예측하기도 쉽지 않고 처리할 수 있는 방법도 없음.
  • Checked Exception vs Unchecked Exception 선택
    • try-catch로 묶어줄 필요가 있을 경우 → Exception 클래스 사용
    • 실행 시 예외를 처리할 수 있는 경우에는 RuntimeException 클래스를 확장해 → Unchecked Exception 사용

2. 정답 확인(매일메일 해설)


3. 최종 정리

  • Checked = 컴파일 시점, 강제 처리
    • IOException, SQLException
  • Unchecked = 런타임, 선택 처리
    • NullPointerException, ArrayIndexOutOfBoundsException
  • Error = 시스템 문제, 복구 불가
    • OutOfMemoryError, StackOverflowError

🔗 참고 URL

댓글

GitHub 계정으로 댓글을 남길 수 있어요.