я определил этот поток:поток исключение броска в фильтре
public int sumNumbers(int[] numbers) {
return IntStream.of(numbers)
.filter(n -> n <= 1000)
.sum();
}
Где я суммируя все целые числа, которые не выше 1000. Но теперь, что я хочу сделать, это, сгенерирует исключение, если любой элемент массива отрицательный.
Я знаю, как сделать это в старомодном режиме, но мне было интересно, если есть какой-то механизм с Stream
и .filter()
где я могу определить фильтр и случай исключения для этого фильтра
Просто для уточнения я хочу вызывать исключение и не контролировать исключение во время выполнения, как это делает другой вопрос.
Идея заключается в том, что если мой фильтр верно:
filter(n -> n < 0 throw Exception)
Почему бы не использовать 'n> = 0 && n <= 1000'? Кроме того, «Функциональный» по умолчанию не поддерживает сброс отмеченных исключений. –
Требование - это исключение, чтобы сообщить неверные данные, что странно, что быть настолько мощным не позволяет что-то подобное. – paul
@TagirValeev вы должны опубликовать этот комментарий в качестве ответа (кроме '.peek (n -> {if (n <0) throw new IllegalArgumentException (" "+ n);}' это то, что хочет OP) – Bohemian