-1

只是尝试一个简单的示例来了解使用 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);
      
  }
4

1 回答 1

0

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

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();
        }
    }
});

这样,当异常被捕获和处理时,它不会干扰下一个周期。您当然可以将整个条件 fromif放入 try-catch 块中,但没有理由这样做。

于 2021-03-08T08:52:28.350 回答