Встречается на собеседованиях • сегодня

Как обрабатывать исключения внутри потока Stream

В Stream исключения можно обрабатывать несколькими способами:

  1. Оборачивание в try-catch внутри лямбды:
java
list.stream()
    .map(item -> {
        try {
            return processItem(item);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    })
    .forEach(System.out::println);
  1. Использование вспомогательного метода:
java
list.stream()
    .map(this::safeProcess)
    .forEach(System.out::println);

private Result safeProcess(Item item) {
    try {
        return processItem(item);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
  1. Использование Either из библиотек (например, Vavr):
java
list.stream()
    .map(item -> Try.of(() -> processItem(item)))
    .filter(Try::isSuccess)
    .map(Try::get)
    .forEach(System.out::println);

Важно помнить, что checked exceptions нужно оборачивать в unchecked исключения, так как лямбды не поддерживают объявление checked exceptions. Для обработки исключений можно использовать peek() или фильтрацию успешных результатов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы