Exception

  • 프로그램 실행 중 발생할 수 있는 비정상적인 상황

Checked Exception

  • 컴파일 시점에 검사되는 예외
  • 컴파일러가 예외 처리 여부 체크
  • 반드시 try-catch 블록으로 처리하거나 throws로 던져야 함
  • 대표적인 예시
    • IOException
    • SQLException
    • FileNotFoundException
  • 특징
    • 예외처리를 강제함으로써 안정성을 높임
    • 예외 상황을 명확히 인식하고 처리하도록 유도

Unchecked Exception

  • 런타임 시점에 발생하는 예외
  • RuntimeException과 그 하위 클래스들
  • 컴파일러가 예외 처리 여부 검사하지 앟음
  • 대표적인 예시
    • NullPointException
    • ArrayIndexOutOfBoundsException
    • IllegalArgumentException
  • 특징
    • 예외 처리를 강제하지 않음
    • 발생 가능성을 고려하여 개발자가 선택적으로 처리
    • 로직 오류나 프로그래머 실수로 인해 주로 발생

Error와 Exception의 차이는 무엇인가요?

Error

  • 주로 JVM에서 발생하는 심각한 문제
  • OutOfMemoryErrorStackOverflowError 등 시스템 레벨에서 발생하는 오류
  • 일반적으로 프로그램에서 처리하지 않으며 회복이 어려운 오류에 속함
  • 애플리케이션 코드에서 복구할 수 없는 심각한 문제

Exception

  • 프로그램 실행 중 발생할 수 있는 오류 상황
  • 대부분의 경우 회복 가능성이 있으며, 프로그램 내에서 예외 처리를 통해 오류 상황 제어 가능

좋은 예외(Exception) 처리

복구 가능한 오류와 불가능한 오류 구분하기

복구 가능한 오류

  • 시스템 외적인 오류로 발생하는 치명적이지 않은 오류
    • 사용자의 오입력
    • 네트워크 오류
  • 로그레벨 warn

복구 불가능한 오류

  • 별도의 조치 없이 시스템이 자동으로 복구할 수 있는 방법이 없는 오류
    • 메모리 부족 (Out of Memory)
    • 스택 오버플로우 (StackOverflow)
    • 시스템 레벨 오류
  • 로그레벨 error

Ref.