Scheduled Task를 구현하던 중 @SneakyThrows를 통해 예외 처리하는 것을 확인✅ Lombok에서 제공하는 어노테이션
✅ 컴파일러 수준에서 try-catch 또는 throws 선언 없이 예외를 던질 수 있도록 지원 (예외 처리 불필요)
✅ 런타임 예외(RuntimeException)가 아닌, 컴파일 시점 체크 예외(Checked Exception)도 예외 처리를 생략 가능
try-catch 예외 처리 구현
public void runTask() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e); // 예외 처리
}
}
@SneakyThorws
import lombok.SneakyThrows;
@SneakyThrows
public void runTask() {
Thread.sleep(1000); // 컴파일러가 자동으로 예외 처리
}
@Scheduled 메서드는 void 타입, throws 선언 불가@Scheduled 내부에서 Checked Exception을 던지려면 반드시 try-catch가 필요@SneakyThrows를 사용하면 try-catch 없이 예외를 처리 가능@Scheduled(fixedRate = 5000)
@SneakyThrows
public void scheduledTask() {
throw new IOException("Checked Exception 발생"); // 자동으로 예외 처리
}
✅ try-catch가 없어도 명확한 예외인 경우 (예외를 명확히 명시하지 않아도 되는 경우)
✅ @Scheduled 같은 throws 선언이 불가능한 메서드인 경우
✅ Checked Exception을 강제로 Unchecked Exception처럼 사용하고자 하는 경우
✅ 람다식 내부에서 컴파일 예외를 처리해야하는 경우
결론적으로 throws로 예외를 선언 가능할 경우는 무조건 try-catch를 이용하여 명확하게 예외를 명시하는게 좋음