1) 프로그램 오류
- 프로그램 오류에는 3가지가 존재합니다.
(1) 컴파일 에러: 컴파일 할 때 발생하는 에러를 의미합니다.
(2) 런타임 에러: 실행 할 때 발생하는 에러를 의미합니다.
(3) 논리적 에러: 작성 의도와 다르게 동작하는 에러를 의미합니다.
- 자바 컴파일러는 기본적으로
(1) 구문 체크
(2) 번역
(3) 최적화
(4) 생략된 코드 추가(ex) extends Object)와 같은 작업을 합니다.
- 컴파일 타임에는 프로그램의 모든 것을 체크할 수 없고, 기본적인 것만 체크합니다.
컴파일할 때 문제가 없었다고 해서, 실행에 문제가 없는 것이 아닙니다.
실행 중에는 많은 복잡한 일들이 일어나고, 그 때 발생하는 에러를 런타임 에러라고 합니다.
- 논리적 에러는 프로그램이 중단되지는 않지만, 내가 원하는대로 동작하지 않는 것입니다.
예를 들어, 재고 관리 프로그램에서 재고의 수가 음수가 되는 것이 논리적 에러입니다.
2) 런타임 에러의 분류
- 자바에서는 런타임 에러를 2가지로 분류하는데, 하나는 에러(error), 다른 하나는 예외(exception)입니다.
에러는 심각한 오류를 의미하고, 예외는 다소 미약한 오류를 의미합니다.
에러 중 대표적인 것으로는 OOME(Out Of Memory Error)가 있습니다.
3) 예외처리의 목적
- 예외처리의 목적은 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것입니다.
4) 예외 클래스의 계층 구조
- 예외 클래스의 계층 구조를 그림으로 나타내면 다음과 같습니다.
- 예외 클래스는 크게 Exception과 Error로 분류됩니다.
Exception 클래스도 크게 두 부분으로 나누어집니다.
아래 그림 중 윗 부분은 Exception 클래스들로서, 주로 사용자의 실수와 같은 외적인 요인에 의해 발생하며,
아래 부분은 RuntimeException 클래스들로서, 주로 프로그래머의 실수에 의해 발생합니다.
참고
남궁성 자바의 정석
'Java' 카테고리의 다른 글
예외 처리(Exception Handling)(3) - printStackTrace(), 멀티 catch 블럭 (0) | 2022.08.30 |
---|---|
예외 처리(Exception handling)(2) - 예외 처리하기, try~catch문 흐름 (0) | 2022.08.30 |
서비스 제공자 프레임워크 (0) | 2022.08.26 |
생성자 대신 정적 팩토리 메서드 (0) | 2022.08.25 |
정규 표현식 (0) | 2022.08.25 |