checked exceptions와 lambdas에 대한 피드백
Source: Dev.to

나는 기사 **Checked exceptions and lambdas**에 대해 많은 흥미로운 피드백을 받았다.
내 자신의 피드백부터 시작하자면, 그 글을 쓴 뒤에 나는 이미 얼마 전에 **similar post**를 썼다는 것을 깨달았다.
내가 만든 실수
Apache Commons Lang 3와 Vavr를 혼동했습니다.
Vavr에 속하는 recover() 함수를 사용했는데, Apache Commons Lang은 일반 유틸리티 메서드만 제공합니다.
Vavr의 Try 클래스는 체크 예외를 발생시키는 메서드를 캡슐화하고 Java를 보다 함수형 스타일로 연결합니다.
var foo = new Foo();
CheckedFunction1 throwingFunction = foo::throwing;
var result = List.of("One", "Two")
.stream()
.map(input ->
Try.of(() -> throwingFunction.apply(input))
.recover(IOException.class, e -> "")
.getOrElse("")
)
.toList();
Vavr의 API는 꽤 방대하지만, Try 자체는 비교적 이해하기 쉬운 인터페이스를 가지고 있습니다:
내가 잊은 것들
Mastodon에서 Oliver Drotbohm이 Spring Framework가 자체 래핑 유틸리티를 제공한다는 점을 지적했습니다.
Oliver Drotbohm: “@frankel@mastodon.top Spring 기반 애플리케이션을 구축하게 된다면, 몇 가지 헬퍼도 있습니다: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/function/package-summary.html”

Source:
배운 점
다른 피드백 중에 Result4J라는, 이전에 들어본 적 없는 라이브러리가 언급되었습니다.
Result4J는 Rust와 유사한 Result 타입을 제공하며, 성공적인 값이나 오류 중 하나를 나타낼 수 있습니다. Java에서는 예외를 통해 오류를 보고하는 것이 일반적이지만, Result 타입은 순수 함수가 예외를 발생시키지 않아야 하는 함수형 스타일 코드에서 유용하게 사용할 수 있습니다.
- 저장소:
- Maven 아티팩트:
io.github.sviperll:result4j
예시 (README에서)
Catcher.ForFunctions io = Catcher.of(IOException.class).forFunctions();
String concatenation = Stream.of("a.txt", "b.txt", "c.txt")
.map(io.catching(name -> loadResource(name)))
.collect(ResultCollectors.toSingleResult(Collectors.join()))
.orOnErrorThrow(Function.identity());

추가 피드백
Bluesky에서 Donald Raab(전 Eclipse Collections 디자이너)가 Eclipse Collections가 체크 예외를 처리하는 방식에 대한 게시물을 공유했습니다.
“공유해 주셔서 감사합니다! 몇 년 전 Eclipse Collections에서의 예외 처리에 관한 블로그를 작성했습니다. 그 안에 @brianvermeer.nl의 훌륭한 블로그 링크도 포함되어 있습니다. 🙏”
게시물을 여기서 읽어보세요:
— Donald Raab (@thedonraab.bsky.social) 2026‑01‑18 19:30 UTC
결론
피드백은 언제나 좋습니다. 피드백 덕분에 제가 실수를 했다는 것을 깨달았고, Spring에서 동일한 기능에 대한 힌트를 얻었으며, result4j를 발견했습니다. 오랫동안 Kotlin으로, 최근에는 Rust로 코딩하면서 Result 접근법의 가치를 체감했습니다. 앞으로 프로젝트에서 Vavr의 대안으로 result4j 사용을 평가해볼 예정입니다.
더 알아보기
원본은 A Java Geek에서 2026년 2월 1일에 게시되었습니다.
