예외와 에러

✒️ 2025-05-29 17:15 내용 수정


Error(에러)

프로그램에서 처리할 수 없는 치명적인 시스템적 문제

Error 종류 설명
OutOfMemoryError 프로그램 실행 중 메모리 부족
IOError 입출력 에러
StackOverFlowError 가용 메모리 부족

Exception(예외)

문법적으로는 문제가 없는 것처럼 보이지만 실제 운영에 생기는 문제


예외의 종류

구분 체크 예외(외부 연결) 비체크 예외(내부)
확인 시점 컴파일 단계에서 확인
(처리가 없다면 컴파일 오류 발생 가능)
실행(Runtime) 단계에서 확인
(컴파일 시점에 검사 X)
처리
여부
문법적으로 예외 처리를 강제함
반드시 처리해야 하는 치명적인 예외 상황
문법적으로 강제하지 않음
개발자의 판단에 의해 처리되는 주로 치명적이지 않은 예외 상황
예외 클래스 RuntimeException을 제외한 Exception 클래스의 자식클래스 RuntimeException의 자식 클래스 모두 포함
IOException, SQLException 등 NullPointerException, IndexOutOfBoundsException 등

1) checked exception

예외 클래스 설명
IOException 입출력 작업 중 발생하는 예외
SQLException 데이터베이스 접근 중 발생하는 예외
ClassNotFoundException 클래스를 찾을 수 없을 때 발생
InterruptedException 스레드가 인터럽트될 때 발생
FileNotFoundException 파일을 찾을 수 없을 때 발생
SAXException XML 문서 구조 오류
ParserConfigurationException XML 파서 설정 오류

2) unchecked exception

예외 클래스 설명
NullPointerException null 객체를 참조할 때 발생
ArrayIndexOutOfBoundsException 배열의 잘못된 인덱스를 접근할 때 발생
ArithmeticException 산술 연산 중 오류가 발생할 때 발생
ClassCastException 잘못된 형변환 시 발생
IllegalArgumentException 메서드에 부적절한 인자를 전달할 때 발생
NumberFormatException 문자열을 숫자로 변환 실패 시 발생