본문 바로가기
Java

자바(Java) - 예외(Exception)

by 작은돼지 2022. 8. 5.

예외 계층도 (일부 생략)

에러(Error)

애플리케이션 레벨에서 대응이 불가능한 심각한 오류

 

예외(Exception)

프로그램 실행 중에 발생하는 비정상적인 이벤트, 적절한 처리로 수습할 수 있다.

 

컴파일 에러(Compile Time Error)

문법 오류, 타입 불일치 등 소스 코드를 컴파일하는 과정에서 발생하는 에러

IDE가 컴파일 에러를 감지하고 표시해주기 때문에 빠르게 확인할 수 있다.

 

런타임 에러(Runtime Error)

컴파일에는 성공했지만 프로그램 실행 중에 발생하는 에러

런타임 상황에서 발생하는 예외는 적절한 처리를 통해 대응할 수 있음

 

Checked Exception (RuntimeException을 제외한 Exception의 하위 클래스)

컴파일러가 체크함(예외 처리를 강제, 그렇지 않으면 컴파일 에러 발생)

try-catch를 사용하여 예외를 직접 처리하거나

선언부에 throws를 사용하여 메서드를 호출한 곳으로 던질 수 있음

(예외 처리를 위임하므로 호출한 곳에서 처리를 해야 함)

 

Unchecked Exception (RuntimeException 클래스와 그 하위 클래스)

예외 처리를 강제하지 않음

 

throw를 사용하여 예외를 강제로 발생시킬 수 있다.

throw new Exception("E"); // Checked
throw new NullPointerException("NPE"); // Unchecked

 

예외 계층

상위 예외를 잡으면 하위 예외도 잡힌다.

Object: 예외가 발생하면 예외 객체가 생성된다. 예외도 객체이므로 최상위 조상은 Object 이다.

Throwable: 최상위 예외, Error도 같이 잡기 때문에 Exception부터 예외로 잡아야 한다.

Exception: 실질적인 최상위 예외, 체크드 예외

RuntimeException: 런타임 예외