只是尝试一个简单的示例来了解使用
forEachOrdered
进行流式处理时的异常处理。
当对当前元素 (1) 执行操作抛出异常时,如何继续对列表 (20) 的下一个元素执行操作。
try {
List<Integer> list = Arrays.asList(10, 1, 20, 15, 2);
list.stream().forEachOrdered(num->{
if(num>2) {
System.out.println(num);
}else {
int result=num/0;
System.out.println(result);
}
});
}catch(Exception e) {
System.out.println("Exception: "+e);
}
为了继续循环,您需要捕获其中的异常
List<Integer> list = Arrays.asList(10, 1, 20, 15, 2);
list.stream().forEachOrdered(num -> {
if(num > 2) {
System.out.println(num);
} else {
try {
int result = num/0;
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
});
这样当异常被捕获并处理时,就不会干扰下一个周期。您当然可以将
if
中的整个条件放入 try-catch 块中,但没有理由这样做。