[Java] : Checked Exception과 Unchecked Exception

Checked Exception

  • 컴파일 단계에서 확인되는 예외
  • 반드시 처리해야 하는 예외
  • e.g.) IOException, SQLException
  • Checked Exception을 유발하는 메서드를 호출하는 경우, 메서드 시그니처에 throws를 사용해 호출자에게 예외를 위임하거나, 메서드 내에서 try-catch를 사용해 해당 예외를 반드시 처리해야 합니다.
  • 외부 환경과의 상호작용에서 발생할 가능성이 높은 예외에 적합
  • e.g.) 파일 입출력, 네트워크 통신
  • 이러한 예외는 예측 가능하며, 호출하는 쪽에서 적절히 처리할 수 있는 여지가 있습니다.

Unchecked Exception

  • 런타임 단계에서 발생하는 예외
  • 컴파일러가 처리 여부를 강제하지 않습니다. 
  • RuntimeException을 상속한 예외들이 해당됩니다.
  • 일반적으로 프로그래머의 실수나 코드의 오류, 논리적 결함으로 인해 발생합니다.
  • e.g.) null 참조, 잘못된 인덱스 접근 등 호출자가 미리 예측하거나 처리할 수 없는 예외