Java 스트림 API에서 orElseThrow 메서드는 Optional 클래스의 메서드 중 하나로, Optional 객체에 값이 없을 경우 예외를 던지는 방식으로 사용됩니다. 이 메서드를 사용하면 값이 없을 때 특정 예외를 던질 수 있어서 더 안전한 코드 작성을 도와줍니다. 이를 스트림과 함께 사용하여 값을 처리하고 예외를 던지는 방법을 설명하겠습니다.
import java.util.Optional;
public class Example {
public static void main(String[] args) {
Optional<String> optional = Optional.of("Hello, World!");
String value = optional.orElseThrow(() -> new RuntimeException("No value present"));
System.out.println(value); // 출력: Hello, World!
}
}
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class StreamExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("one", "two", "three", "four");
String result = list.stream()
.filter("five"::equals)
.findFirst()
.orElseThrow(() -> new RuntimeException("Element not found"));
System.out.println(result);
}
}
위 예제는 다음과 같은 과정을 거칩니다:
- list에서 스트림을 생성합니다.
- filter 메서드를 사용하여 조건을 만족하는 요소를 필터링합니다.
- findFirst 메서드를 사용하여 첫 번째 요소를 Optional로 반환합니다.
- orElseThrow를 사용하여 값이 없을 경우 지정된 예외를 던집니다.
만약 리스트에 "five"가 없다면 RuntimeException이 던져집니다.
CustomException 사용예제
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
class NoEvenNumberFoundException extends RuntimeException {
public NoEvenNumberFoundException(String message) {
super(message);
}
}
public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 3, 5, 7);
Integer evenNumber = numbers.stream()
.filter(num -> num % 2 == 0)
.findFirst()
.orElseThrow(() -> new NoEvenNumberFoundException("No even number found in the list"));
System.out.println(evenNumber);
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
Multi Datasource 를 이용한 database routing 전략 (0) | 2024.07.06 |
---|---|
Java Streams API - 3 (0) | 2024.05.26 |
Java Streams API - 2 (0) | 2024.05.26 |
Java Streams API - 1 (0) | 2024.05.26 |