Java에는 Checked Exception과 Unchecked Exception(Runtime Exception)이 있다.
catch
해서 일정 시간, 조건만큼 대기 후 다시 재시도 반복throws
하는 방법throws
를 하지만, 적절한 예외로 전환하여 던지는 방식checked | unchecked | |
---|---|---|
예외 처리 | 필수 | 필수 아님 |
트랜잭션 롤백 | 안됨 | 기본값으로 들어 있어서 진행 |
검증 | 컴파일 단계 | 런타임 단계 |
try~ catch~
로 예외 처리를 하거나 상위 메소드로 throw
필요@Transactional
의 rollbackFor
옵션RuntimeException
을 상속하는 예외를 말한다.
@Transactional
의 rollbackFor
옵션이 기본이라 예외 발생 시 롤백 처리됨일반적으로 로직을 처리하는 Service
클래스의 경우 예외를 복구할 수 없는 checked exception은 회피나 무시보다는 unchecked exception으로 wrap하여 처리하는 것이 좋다.
다만, 특정 메소드에서 어떤 예외가 발생하는지 명시적으로 알려줘야 할 때에는 checked exception을 그대로 사용하는 것이 나은 경우도 있다.
Oracle :: unchecked exceptions
Here's the bottom line guideline: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.