에러(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: 런타임 예외
'Java' 카테고리의 다른 글
[Java] 문자열 뒤집기 (0) | 2022.08.13 |
---|---|
자바 - 내부 클래스(Inner class) (0) | 2022.08.10 |
[Java] 컬렉션 프레임워크(Collection Framework) (0) | 2022.08.03 |
[Java] .equals("")와 .isEmpty()의 차이 (0) | 2022.08.01 |
[Java] 자바 쓰레드 동기화(Synchronize) (0) | 2022.08.01 |