Java에서는 예외 처리 매커니즘을 통해 프로그램에서 발생할 수 있는 다양한 오류 상황을 처리합니다.
Exception과 Error의 클래스 구조는 아래와 같습니다.
Error는 시스템 수준에서 발생하는 심각한 문제를 나타냅니다.
주로 JVM 관련 오류나 메모리 부족 등 복구 불가능한 상황을 나타내기 때문에, 애플리케이션 코드에서 이를 처리하지 않아도 됩니다.
OutOfMemoryError
: JVM이 메모리를 모두 사용StackOverflowError
: 메서드 호출이 너무 깊어 스택 메모리 초과Checked Exception은 컴파일 타임에 반드시 처리해야 하는 예외입니다.
이러한 예외는 예측 가능한 문제를 나타내며, 반드시 try-catch 블록으로 처리하거나 throws 키워드를 사용하여 메서드 시그니처에 선언해야 합니다.
주로 외부 자원(DB Connection 등)과의 상호작용에서 발생합니다.
IOException
: 입출력 작업에서 발생SQLException
: 데이터베이스 접근에서 발생Unchecked Exception은 런타임에 발생할 수 있고, 예외 처리를 강제하지 않습니다.
컴파일 타임에 예외 처리를 강제하지 않는 예외입니다.
주로 프로그래머의 실수로 발생합니다.
NullPointerException
: 객체 참조가 null인 상태에서 메서드 호출이나 필드 접근 시도ArrayIndexOutOfBoundsException
: 배열 인덱스가 범위를 벗어남ArithmeticException
: 0으로 나누는 연산 시도