Exception
- 프로그램 실행 중 발생할 수 있는 비정상적인 상황
Checked Exception
- 컴파일 시점에 검사되는 예외
- 컴파일러가 예외 처리 여부 체크
- 반드시 try-catch 블록으로 처리하거나 throws로 던져야 함
- 대표적인 예시
- IOException
- SQLException
- FileNotFoundException
- 특징
- 예외처리를 강제함으로써 안정성을 높임
- 예외 상황을 명확히 인식하고 처리하도록 유도
Unchecked Exception
- 런타임 시점에 발생하는 예외
- RuntimeException과 그 하위 클래스들
- 컴파일러가 예외 처리 여부 검사하지 앟음
- 대표적인 예시
- NullPointException
- ArrayIndexOutOfBoundsException
- IllegalArgumentException
- 특징
- 예외 처리를 강제하지 않음
- 발생 가능성을 고려하여 개발자가 선택적으로 처리
- 로직 오류나 프로그래머 실수로 인해 주로 발생
Error와 Exception의 차이는 무엇인가요?
Error
- 주로 JVM에서 발생하는 심각한 문제
OutOfMemoryError
,StackOverflowError
등 시스템 레벨에서 발생하는 오류- 일반적으로 프로그램에서 처리하지 않으며 회복이 어려운 오류에 속함
- 애플리케이션 코드에서 복구할 수 없는 심각한 문제
Exception
- 프로그램 실행 중 발생할 수 있는 오류 상황
- 대부분의 경우 회복 가능성이 있으며, 프로그램 내에서 예외 처리를 통해 오류 상황 제어 가능
좋은 예외(Exception) 처리
복구 가능한 오류와 불가능한 오류 구분하기
복구 가능한 오류
- 시스템 외적인 오류로 발생하는 치명적이지 않은 오류
- 사용자의 오입력
- 네트워크 오류
- 로그레벨 warn
복구 불가능한 오류
- 별도의 조치 없이 시스템이 자동으로 복구할 수 있는 방법이 없는 오류
- 메모리 부족 (Out of Memory)
- 스택 오버플로우 (StackOverflow)
- 시스템 레벨 오류
- 로그레벨 error