728x90
@SneakyThrows란?
@SneakyThrows는 Lombok 라이브러리에서 제공하는 어노테이션 중 하나로, 체크 예외(checked exceptions)를 명시적으로 처리하지 않아도 되는 방식으로 만들어주는 역할을 합니다.
보통 Java에서 체크 예외는 try-catch 블록이나 throws 선언을 통해 처리해야 하지만, @SneakyThrows를 사용하면 이러한 예외 처리를 코드에서 생략할 수 있습니다.
@SneakyThrows의 주요 기능
- 체크된 예외(checked exceptions)를 런타임 예외(unchecked exceptions)로 변환합니다.
- 메서드나 생성자에 선언된 예외 처리 코드를 간소화합니다.
- 컴파일러의 "unhandled exception" 경고를 무시할 수 있게 해줍니다.
@SneakyThrows 사용 예제
import lombok.SneakyThrows;
public class Example {
@SneakyThrows
public void readFile(String filename) {
FileInputStream fis = new FileInputStream(filename);
// 파일 처리 로직...
}
}
위 코드에서는 FileNotFoundException이 발생할 수 있지만, @SneakyThrows로 인해 try-catch 블록이 필요 없습니다.
이 어노테이션을 사용하면 코드가 간결해지지만, 예외 처리를 우회하기 때문에 신중하게 사용해야 합니다. 실제 예외 발생 시 디버깅이 어려워질 수 있고, 예외 처리 로직이 명확하지 않을 수 있습니다.
따라서, 단순한 테스트나 간단한 작업에서는 유용하지만, 실무에서는 신중하게 사용하는 것이 좋습니다.
@SneakyThrows 사용 이유
- 코드 간소화
- 체크된 예외를 처리하기 위한 try-catch 블록이나 throws 선언을 줄일 수 있습니다.
- 이로 인해 코드가 더 간결해지고 가독성이 향상될 수 있습니다.
- 보일러플레이트 코드 감소
- 자주 발생하지만 실제로 처리하기 어려운 예외(예: IOException)에 대한 반복적인 예외 처리 코드를 줄일 수 있습니다.
- 람다 표현식에서의 편의성
- 함수형 인터페이스를 구현할 때, 체크된 예외를 던지는 메서드를 더 쉽게 사용할 수 있습니다.
- 테스트 코드 작성 용이
- 단위 테스트에서
예외 처리에 집중하지 않고 핵심 로직을 테스트하는 데 집중할 수 있습니다.
- 단위 테스트에서
- 런타임 시 예외 처리
- 컴파일 타임에 체크된 예외를 잡아내는 대신, 런타임에 예외를 처리할 수 있게 합니다.
이러한 이유로 @SneakyThrows를 사용하면 코드 작성이 더 편리해질 수 있지만, 예외 처리의 명확성과 안전성을 희생할 수 있다는 점을 유의해야 합니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.10.14 - Grafana에서 CPU 사용량이 50% 이상일 때 자동으로 Slack에 알림이 전송하기 (0) | 2024.10.14 |
---|---|
[TIL, 일일 회고] 2024.10.13 - vi/vim 명령어 (1) | 2024.10.13 |
[TIL, 일일 회고] 2024.10.11 - SDK란 무엇일까❓ (토스페이먼츠 SDK) (2) | 2024.10.11 |
[TIL, 일일 회고] 2024.1010 - RestTemplate HTTP 요청 메서드 (0) | 2024.10.10 |
[TIL, 일일 회고] 2024.10.09 - @Positive, @PositiveOrZero (0) | 2024.10.09 |