问题描述
只是尝试一个简单的例子来理解使用 foreachordered 进行流式处理时的异常处理。请写下在当前元素抛出异常 (1) 时我们如何继续对 list(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 块中,但没有理由这样做。