[Java 예외] 예외 처리 시스템 Checked와 Unchecked Exception
Java의 예외 처리 시스템은 Checked와 Unchecked로 나뉘며, Object와 Throwable을 최상위 클래스로 하여 Error와 Exception으로 구분합니다.
예외 계층 구조
최상위는 Object 클래스, 그 다음은 Throwable 클래스 -> 그 다음은 Error, Exception 클래스
try {
// 예외 발생 가능 코드
} catch (Throwable t) {
// Error와 Exception 모두 처리 가능
}
Error
오류
- 개발자가 예측/처리 불가능
- 시스템 레벨의 심각한 문제
- 예: OutOfMemoryError, StackOverflowError
Exception
예외
- 개발자가 예측/처리 가능한 문제
- 개발자 구현 로직 같은 곳에서 발생
- 두 가지 유형으로 구분:
구분 | Checked Exception | Unchecked Exception |
---|---|---|
처리 여부 | 컴파일러가 처리 강제 | 컴파일러가 처리 강제X |
대표 예시 | IOException, SQLException | RuntimeException과 하위 클래스 |
주요 발생 원인 | 외부 리소스 접근 | 프로그래밍 로직 오류(개발자 실수) |
Checked, Unchecked Exception
// Checked Exception 예시
try {
FileReader file = new FileReader("file.txt");
} catch (IOException e) { // 반드시 처리해야 함
e.printStackTrace();
}
// Unchecked Exception 예시
String str = null;
str.length(); // NullPointerException (처리 선택적)
적절한 예외 처리는 프로그램의 안정성과 유지보수성을 높이는 핵심 요소입니다.
댓글남기기