Java8 - 嵌套流和未经检查的异常

时间:2015-07-15 06:31:27

标签: exception java-8 java-stream

我试图在嵌套流中抛出未经检查的运行时异常。出于某种原因,这似乎是不可能的。为什么呢?

见下面的例子。请注意,逻辑没有多大意义。它仅用于演示目的。

public static void main(String[] a) {
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

    list.stream()
            .map(item -> list.stream()
                    .filter(item2 -> item.equals(item2))
                    .findFirst()
                    .orElseThrow(RuntimeException::new))
            .collect(Collectors.toList());
}

1 个答案:

答案 0 :(得分:3)

似乎编译器无法推断出异常的类型。

只需使用

    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

    list.stream()
        .map(item -> list.stream()
                         .filter(item2 -> item.equals(item2))
                         .findFirst()
                         .<RuntimeException>orElseThrow(RuntimeException::new))
        .collect(Collectors.toList());