如何在异常时使用 forEachOrdered 继续对下一个元素执行操作?

问题描述 投票:0回答:1

只是尝试一个简单的示例来了解使用

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);
      
  }
java exception java-stream
1个回答
1
投票

为了继续循环,您需要捕获其中的异常

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 块中,但没有理由这样做。

© www.soinside.com 2019 - 2024. All rights reserved.