본문 바로가기
개인공부

Checked, Unchecked Exception 정리

by 리승우 2023. 2. 20.

Exception(예외)란?

사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류.

예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하나, 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있음

 

Checked, Unchecked Exception 란?

자바의 예외에는 일반 예외와 실행 예외가 있고, 각각 Checked Exception과Unchecked Exception구분됨.

 

Checked Exception (일반 예외)

1. 개발자가 반드시 예외처리를 명시적으로 처리해야함 (하지않을 시 컴파일 단계 에러발생)

EX) try Catch 혹은 throws를 통해 호출한 메서드로 예외를 던져야 함.

 

2. 예외가 발생하여도 트랜잭션 (@Transactional) 정상적으로 커밋됨.

 

3. Runtime Exception 제외, 모든 Exception이 여기에 속함 (아래 그림참조)

 

EX) IOException 등등

Unchecked Exception (실행 예외)

1. 명시적인 예외처리 코드가 강제되지 않음

 

2. 실행 단계에서 에러 발생함

 

3. 예외 발생 시, 트랜잭션 (@Transactional) 롤백됨.

 

4. 예외 상황을 예측하여 CustomException, @ControllerAdvice, @ExceptionHandler 등을 통해 예기치 못한 서버종료 사태를 막아야함.

 

EX) NullPointerException, IllegalArgumentException 등등

 

 

Transaction 관련 깨알 팁

Transaction은 기본적으로 RuntimeException과 Error가 발생했을 때만 롤백

( Checked Exception이 발생해도 커밋이 진행됨 )

 

하지만 Checked Exception을 롤백 대상으로 삼고싶다면 아래와 같이 특정 예외를 클래스로 전달

@Transactional(rollbackFor=IOException.class)

 

반대로 Unchecked Exception이 발생해도 커밋되게 하고싶으면 아래와 같이 진행

@Transactional(noRollbackFor=NullpointerException.class)

 

여러 개를 지정하고 싶다면 아래처럼 진행

@Transactional(noRollbackFor={NullpointerException.class, IllegalArgumentException.class})

'개인공부' 카테고리의 다른 글

Stream 정리  (0) 2023.02.26
Stream 활용예시  (0) 2023.02.24
JPA (Java Persistence API) 관련개념 간략 총정리  (0) 2023.01.30
2023.01.17 TIL  (0) 2023.01.17
2023.01.17 개인기록  (0) 2023.01.17

댓글