- RuntimeException 과 그 하위 예외는 언체크 예외로 분류된다.
- 언체크 예외는 말 그대로 컴파일러가 예외를 체크하지 않는다는 뜻이다.
- 언체크 예외는 체크 예외와 기본적으로 동일하다. 차이가 있다면 예외를 던지는 throws 를 선언하지 않고,
생략할 수 있다. 이 경우 자동으로 예외를 던짐
체크 예외 vs 언체크 예외
- 체크 예외: 예외를 잡아서 처리하지 않으면 항상 throws 에 던지는 예외를 선언해야 한다.
- 언체크 예외: 예외를 잡아서 처리하지 않아도 throws 를 생략할 수 있다.
언체크 예외를 잡아서 처리하는 코드
try {
repository.call();
} catch (MyUncheckedException e) {
//예외 처리 로직
log.info("error", e);
}
- 언체크 예외도 필요한 경우 이렇게 잡아서 처리할 수 있다.
언체크 예외를 밖으로 던지는 코드 - 생략
public void callThrow() {
repository.call();
}
- 언체크 예외는 체크 예외와 다르게 throws 예외 를 선언하지 않아도 된다.
- 말 그대로 컴파일러가 이런 부분을 체크하지 않기 때문에 언체크 예외이다.
언체크 예외를 밖으로 던지는 코드 - 선언
public void callThrow() throws MyUncheckedException {
repository.call();
}
- 언체크 예외도 throws 예외 를 선언해도 된다. 물론 생략할 수 있다.
- 언체크 예외는 주로 생략하지만, 중요한 예외의 경우 이렇게 선언해두면 해당 코드를 호출하는 개발자가
이런 예외가 발생한다는 점을 IDE를 통해 좀 더 편리하게 인지할 수 있다.
- (컴파일 시점에 막을 수 있는 것은
아니고, IDE를 통해서 인지할 수 있는 정도이다.)
언체크 예외 장단점
- 장점: 신경쓰고 싶지 않은 언체크 예외를 무시할 수 있다. 체크 예외의 경우 처리할 수 없는 예외를 밖으로
던지려면 항상 throws 예외 를 선언해야 하지만, 언체크 예외는 이 부분을 생략할 수 있다. - 언체크 예외는 개발자가 실수로 예외를 누락할 수 있다. 반면에 체크 예외는 컴파일러를 통해 예외
누락을 잡아준다.
정리 : 체크 예외와 언체크 예외의 차이는 사실 예외를 처리할 수 없을 때 예외를 밖으로 던지는 부분에 있다.
이 부분을 필수로 선언해야 하는가 생략할 수 있는가의 차이다.
<출처 김영한:스프링 DB 1편 - 데이터 접근 핵심 원리>
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard
스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의
백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의
www.inflearn.com
'Spring > SpringDB' 카테고리의 다른 글
언체크 예외 활용 (0) | 2022.06.22 |
---|---|
체크 예외 활용 (0) | 2022.06.22 |
체크 예외 기본 이해 (0) | 2022.06.20 |
자바 예외 계층 & 예외 기본 규칙 (0) | 2022.06.20 |
트랜잭션 AOP 정리 & 스프링 부트의 자동 리소스 등록 (0) | 2022.06.20 |