- Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다.
애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다.- 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다. 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문에다. 애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다.
- Exception : 체크 예외
- 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.
- Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException 은 예외로 한다
- RuntimeException : 언체크 예외, 런타임 예외
- 컴파일러가 체크 하지 않는 언체크 예외이다.
- RuntimeException 과 그 자식 예외는 모두 언체크 예외이다.
- RuntimeException 의 이름을 따라서 RuntimeException 과 그 하위 언체크 예외를 런타임 예외라고 많이 부른다.
- 체크 예외, 언체크 예외
- 체크 예외는 복구 가능성이 있는 예외로 반드시 예외를 처리하는 코드를 함께 작성해야 한다.
예외를 처리하지 않으면 컴파일 에러가 발생한다. - 언체크 예외는 복구 가능성이 없는 예외로 예외처리를 강제하지 않는다.
- 체크 예외는 복구 가능성이 있는 예외로 반드시 예외를 처리하는 코드를 함께 작성해야 한다.
언제 체크 예외를 사용하고 언제 언체크(런타임) 예외를 사용하면 좋을까 ?
기본원칙
- 기본적으로 언체크(런타임) 예외를 사용하자.
- 체크 예외는 비즈니스 로직상 의도적으로 던지는 예외에만 사용하자.
인프런 김영한님의 스프링 DB 1편을 듣고 작성한 글입니다.
'Spring' 카테고리의 다른 글
Spring Boot 초기 설정 (0) | 2022.08.18 |
---|---|
Spring Security 간단 적용 (0) | 2022.08.01 |
트랜잭션의 개념과 이해 (0) | 2022.07.24 |
Spring Boot 와 JWT (0) | 2022.07.20 |
파일 업로드 (0) | 2022.06.26 |
댓글