오류 - 시스템에 비정상적인 상황이 생겼을 때 발생. 시스템 레벨에서 발생하는 심각한 오류 예외 - 개발자가 구현한 로직에서 발생하기 때문에 예외를 구분하고 처리하여 방지하는 것이 좋다
https://www.nextree.co.kr/content/images/2021/01/Exception-Class.png
CheckedException | UnCheckedException | |
---|---|---|
처리여부 | 반드시 처리를 해야함 | 명시적인 처리를 강요하지 않음 |
확인시점 | 컴파일 단계 | 실행 단계 |
롤백 여부 | 롤백하지 않음 | 롤백 |
대표예외 | Exception 하위 클래스 중 Runtime Exception을 제외한 모든 예외 | RuntimeException |
ex) NullPointerException, IllegalArgumentException |
try {
// ...
} catch (NullPointerException e) {
log.error("");
}
예외가 발생하여도 정상적인 흐름으로 진행됨. 예외를 미리 예측하여 다른 흐름으로 유도시켜 정상적으로 종료가 되게끔 함.
public void test() throws Exception { }
예외 발생시 호출한 쪽에 예외를 던져 처리를 회피하는 것
try {
//
} catch (SQLException e) {
throw new IlligalArgumentException();
}
수월한 예외처리를 위해 예외를 전환하여 던짐