如何在 Consumer Java 8 中抛出异常

OEH*_*OEH 5 java consumer java-8

在 java 8 中使用消费者时有什么方法可以抛出异常吗?

例如:

    private void fooMethod(List<String> list) throws Exception {

    list.forEach(element->{
        if(element.equals("a")) {
            throw new Exception("error!");
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译器错误:未处理的异常类型异常

在这种情况下抛出异常的正确方法是什么?

小智 5

由于 Exception 及其子类(除了 RuntimeException)是受检异常,并且在 lambda 中,您不能抛出受检异常。因此你应该使用 RuntimeException:

private void fooMethod(List<String> list) throws Exception {
    list.forEach(element->{
        if(element.equals("a")) {
            throw new RuntimException("error!");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)