首页 > 解决方案 > 在流中按条件抛出异常

问题描述

如何过滤流表达式以引发异常?

我有检查列表元素总和的功能,如果总和大于 1 -> 抛出异常

Double sum = list.stream().map(element::getNumber).reduce(0.0,Double::sum);
if(sum>1){
   throw new Exception("message);
}

是否可以if向流表达式添加条件以摆脱附加if条件?

标签: javajava-stream

解决方案


您可以使用单个参数Stream.reduce()Optional.orElseThrow()

list.stream()
    .map(element::getNumber)
    .reduce(Double::sum)
    .filter(sum -> sum <= 1)
    .orElseThrow(() -> new Exception("message"));

推荐阅读