流在过滤器中抛出异常
Stream throw exception in filter
我已经定义了这个流:
public int sumNumbers(int[] numbers) {
return IntStream.of(numbers)
.filter(n -> n <= 1000)
.sum();
}
我对所有不高于 1000 的整数求和。但现在我想做的是,如果数组的任何元素为负数,则抛出异常。
我知道如何在老式模式下做到这一点,但我想知道 Stream
和 .filter()
是否有任何机制,我可以在其中定义过滤器和该过滤器的异常情况
澄清一下,我想抛出一个异常,而不是像另一个问题那样控制运行时异常。
这里的想法是,如果我的过滤器在以下情况下为真:
filter(n -> n < 0 throw Exception)
JDK中有一个IllegalArgumentException
没有勾选,提示函数输入错误,所以可以用在这里:
IntStream.of(numbers)
.peek(n -> {
if (n < 0) throw new IllegalArgumentException(String.valueOf(n));
})
.sum();
总的来说,目前Java正在向unchecked-only异常发展。 Java-8!
中甚至还添加了UncheckedIOException
class
我已经定义了这个流:
public int sumNumbers(int[] numbers) {
return IntStream.of(numbers)
.filter(n -> n <= 1000)
.sum();
}
我对所有不高于 1000 的整数求和。但现在我想做的是,如果数组的任何元素为负数,则抛出异常。
我知道如何在老式模式下做到这一点,但我想知道 Stream
和 .filter()
是否有任何机制,我可以在其中定义过滤器和该过滤器的异常情况
澄清一下,我想抛出一个异常,而不是像另一个问题那样控制运行时异常。
这里的想法是,如果我的过滤器在以下情况下为真:
filter(n -> n < 0 throw Exception)
JDK中有一个IllegalArgumentException
没有勾选,提示函数输入错误,所以可以用在这里:
IntStream.of(numbers)
.peek(n -> {
if (n < 0) throw new IllegalArgumentException(String.valueOf(n));
})
.sum();
总的来说,目前Java正在向unchecked-only异常发展。 Java-8!
中甚至还添加了UncheckedIOException
class