Java 예외: 종류, 계층 구조, 처리 기초
Java 예외
Java 예외 탐구—에러 이해, 예외 종류, 견고한 에러 처리를 형성하는 계층 구조.
예외는 프로그램 정상 흐름을 방해하는 예기치 않은 이벤트로, 종종 비정상 종료로 이어집니다.
예외는 다양한 원인에서 발생할 수 있습니다:
- 잘못된 사용자 입력
- 장치 장애
- 네트워크 중단
- 물리적 제약(예: 디스크 공간 부족)
- 코드 결함
- 사용 불가 파일 열기 시도
Java 예외 계층 구조
아래는 Java 예외 계층 구조 간소화 다이어그램입니다.

이 계층 루트는 Throwable 클래스. 두 주요 분기로 나뉩니다: Error와 Exception.
에러 (Errors)
에러는 JVM 메모리 부족, 스택 오버플로, 라이브러리 비호환성, 무한 재귀 같은 복구 불가능 조건 나타냄. 보통 프로그래머 제어 범위 밖이며 처리 시도 권장하지 않음.
예외 (Exceptions)
예외는 프로그램이 잡고 복구할 수 있는 조건. 예외 발생 시 JVM이 예외 객체 생성하여 이름, 설명, 발생 시점 프로그램 상태 캡슐화.
다음 튜토리얼에서 예외 처리 방법 다룰 예정. 지금은 Exception 분기 내 두 주요 범주 살펴보기.
Java 예외 종류
Exception 분기는 RuntimeException(언체크드)과 IOException(체크드)으로 나뉩니다. 차이 이해가 효과적 에러 처리의 열쇠.
1. RuntimeException
RuntimeException 인스턴스는 프로그래밍 실수에서 발생하며 컴파일 타임에 검사되지 않음. 일반적인 예:
- 부적절한 API 사용 –
IllegalArgumentException
- Null 포인터 역참조 –
NullPointerException
- 배열 인덱스 범위 초과 –
ArrayIndexOutOfBoundsException
- 0으로 나누기 –
ArithmeticException
요약: 런타임 예외면 주로 수정해야 할 코딩 에러 신호이며 잡기보다 수정 권장.
2. IOException
IOException은 컴파일러가 개발자 처리 강제하는 체크드 예외. 대표 시나리오:
- 존재하지 않는 파일 열기 시도 –
FileNotFoundException
- 파일 끝 이후 읽기
이 체크드 예외 적절 처리는 탄력적 애플리케이션 구축에 필수.
다음 튜토리얼에서 예외 처리 기법 심층 다룰 예정.