Checked Exception
프로그램이 제어할 수 없는 오류를 뜻한다.
예를 들어 FileInputStream의 생성자 사용 시 입력 파일이 존재하지 않을 경우 FileNotFoundException을 발생시킨다.
Java는 컴파일 타임에 Checked Exception을 확인한다.
따라서 Checked Exception을 선언하려면 throw나 try-catch 블록을 사용해야 한다.
Unchecked Exception
프로그램에서 확인되지 않은 예외가 발생하면 프로그램 논리 내부에 오류가 생기는 것
예를 들어 숫자를 0으로 나누면 ArithmeticException이 발생한다.
컴파일 시점에 Unchecked Exception은 확인하지 않는다.
또한 throw, try-catch 블록으로 예외를 잡을 필요가 없다.
즉 컴파일 시간 동안은 오류가 없지만, 런타임 시간에 발생하는 오류이다.
Oracle Java 설명서에서는 “클라이언트가 예외로부터 복구할 것을 예상할 수 있다면 이를 확인된 예외로 만들고, 클라이언트가 예외로부터 복구하기 위해 아무것도 할 수 없으면 확인되지 않은 예외로 만들어라” 라고 한다.
트랜잭션 롤백 처리
Spring의 Transactional 어노테이션은 기본 정책이 UnChecked Exception과 Error이다. 즉 Checked Exception에서는 영향이 없다.
하지만 이건 어디까지나 기본값일 뿐이지 개발자에 의해 Transaction을 설정해 반대로 설정할 수 도 있고, 특정한 예외에서는 롤백이 발생하게, 안하게 할 수 있다.
- @Transactional(rollbackFor = Exception.class); // 모든 예외 롤백
- Checked Exception을 try-catch문으로 더 구체적인 Unchecked Exception으로 처리한다.
'Back-end' 카테고리의 다른 글
BackEnd(Java/Spring) 기술면접 (3) | 2023.05.09 |
---|---|
객체지향 생활 체조 원칙 9가지 (0) | 2022.11.07 |
Session 이란? (0) | 2022.10.17 |
[Spring Security] 스프링 시큐리티 (0) | 2022.10.17 |
다양한 연관관계 매핑 (0) | 2022.09.15 |