728x90
반응형
source 는 Github 에 있습니다.
목차는 Java series 에 있습니다.
[Java 2편] stream 내에서 CheckedException, RuntimeException 처리
source code
- stream 내에서 CheckedException 과 RuntimeException 처리 관련 코드 예시에 대해서 정리했습니다.
public class StreamWithExceptionTest {
@Test
public void stream_내에서_RuntimeException_테스트() {
String[] strings = new String[] {"hello", "world", "hi"};
List<String> list = Arrays.asList(new String[]{"abcde", "test", "abc"});
Assertions.assertThrows(IllegalStateException.class, () -> {
Arrays.asList(strings).stream().filter(str -> !list.contains(str))
.findFirst().ifPresent(str -> {
throw new IllegalStateException();
});
} );
}
@Test
public void stream_내에서_CheckedException_발생_테스트() {
List<String> result =
Arrays.stream(new String[]{"테스트1", "테스트2"})
.map(wrap(s -> URLEncoder.encode(s, Charset.defaultCharset().name())))
.collect(Collectors.toList());
Assertions.assertEquals(2, result.size());
}
@FunctionalInterface
private interface FunctionWithException<T, R, E extends Exception> {
R apply(T t) throws E;
}
private <T, R, E extends Exception> Function<T, R> wrap(FunctionWithException<T, R, E> f) {
return arg -> {
try {
return f.apply(arg);
} catch (Exception e) {
throw new RuntimeException(e);
}
};
}
}
reference
'Java > series' 카테고리의 다른 글
[Java 6편] 절차지향적, 객체지향적 설계 (0) | 2022.08.05 |
---|---|
[Java 5편] 객체, 엔티티, 테이블 설계 (0) | 2022.08.04 |
[Java 4편] 객체지향, 함수형프로그래밍, 람다식 (0) | 2022.07.27 |
[Java 3편] stream list to map (0) | 2022.07.06 |
[Java 1편] stream 내에서 값이 제일 큰 객체 추출 (0) | 2022.06.27 |
댓글