Checked Exception / Unchecked Exception

성현·2024년 5월 20일
0

자바의 에러는 크게 2개로 나뉜다.

  • Error : 시스템의 비 정상적인 예외 상황(얘도 따지고보면 UncheckedException )
  • Exception : 개발자의 실수

Checked Exception :
RuntimeException의 하위클래스가 아니면서 처리할 수 있는 오류.
- try ~catch로 처리되어야함
- 에러발생시 롤백하지 않음
- ex. FileNotFoundException

Unchecked Exception :
RuntimeException의 하위클래스, 처리할 수 없는 오류로 runtime중에 발생할 수 있음.

  • 에러발생시 롤백

즉, 컴파일이 잡는 오류는 CheckedException, 아니고 실행중 나오는 오류는 UncheckedException이다.
에러는 (1) 던지거나(throws) (2) 잡는것 (catch) 으로 처리할 수 있다.

CheckedException 처리

checkedException은 항상 throws를 해줘야하고 처리해줘야한다.

static class Service{
        Repository repository = new Repository();
        
        public void callCatch() {
            try {
                repository.call(); //잡음
            } catch (MyCheckedException e) {
                //예외처리 로직
                log.info("예외처리, message ={}", e.getMessage(), e);
            }
            //이후로 정상 동작 -> 성공으로 동작
        }
 
        public void callThrow() throws MyCheckedException {
            repository.call(); //던짐
        }

    }

    static class Repository {
        public void call() throws MyCheckedException{ //checked 예외는 잡거나 던져야함
            //checkerror라서 컴파일 에러뜸
            throw new MyCheckedException("ex");
        }
    }

요즘은 잘 쓰이지 않는다.
그 이유는 처리하기 어려운 db exception, network 오류와 같은걸 처리할수없어서 계속 던지는 경우에 1. 의존성이 생김 2. 복구불가능함 이런 이슈가 생기기 때문이다.

UncheckedException 처리

ChekcedException 은 try ~catch문으로 잡아 처리하면 되는데 UncheckedException은 실행중 발생하는 이슈로 무분별한 사용을 막으려 강제하지 않는다.
UncheckedException은 throws를 생략해도 잘 동작한다(무시가능)

참고 : https://devlog-wjdrbs96.tistory.com/351
https://velog.io/@squarebird/Checked-Exception%EA%B3%BC-Unchecked-Exception

profile
행동하는 사람

0개의 댓글