Error
- Error는 시스템 레벨에서 발생하는 심각한 문제를 말합니다.
- 프로그램이 복구될 수 없는 심각한 문제입니다.
- 개발자가 처리할 수 없는 문제입니다.
주요 Error
- OutOfMemoryError
- JVM에 할당된 메모리가 부족할 때 발생
- 메모리 누수나 과도한 메모리 사용 시 발생
- StackOverflowError
- 스택 메모리가 넘칠 때 발생
- 재귀 호출이 너무 깊어질 때 발생
Exception
- Exception은 프로그램 실행 중 발생하는 예외적인 상황을 말합니다.
- 프로그래머가 적절한 코드로 대응할 수 있는 문제입니다.
- 예외 처리를 통해 정상 실행 흐름으로 돌아갈 수 있습니다.
주요 Exception
✅ Checked Exception
- 컴파일 시점에 확인되는 예외
- 반드시 예외 처리를 해야 함
- 예시:
IOException, SQLException
✅ Unchecked Exception (Runtime Exception)
- 실행 시점에 확인되는 예외
- 예외 처리가 선택적임
- 예시:
NullPointerException, ArrayIndexOutOfBoundsException
사용자 정의 Exception
- 사용자 정의 Exception은 기존 예외 클래스를 상속받아 직접 만드는 예외 클래스를 말합니다.
- 프로그램에 특화된 예외 처리가 필요할 때 사용됩니다.
- 일반적으로
Exception 또는 RuntimeException을 상속받아 구현합니다.
필요한 이유
- 프로그램 특성에 맞는 예외 처리를 직접 할 수 있습니다.
- 예외 발생 원인을 더 명확하게 전달할 수 있습니다.
- 예외 처리를 더 구체적으로 할 수 있습니다.
- 비즈니스 로직에 맞는 예외 처리 구현이 가능합니다.
구현 방법
- 이름은 보통
~Exception으로 끝나야 함
- 목적에 맞는 적절한 부모 클래스 선택 필요
Exception : 반드시 예외 처리를 해야 함 (Checked)
RuntimeException : 선택적 예외 처리 가능 (Unchecked)