Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java8foreach循环调用方法和句柄exoption_Java_Java 8_Java Stream - Fatal编程技术网

使用Java8foreach循环调用方法和句柄exoption

使用Java8foreach循环调用方法和句柄exoption,java,java-8,java-stream,Java,Java 8,Java Stream,若条件满足,我将执行下面的代码,我将生成异常,但即使我将得到异常,我也希望跳过该循环,并希望执行保留代码,所以有任何方法吗 public class Test { public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("1"); items.add("2"); items

若条件满足,我将执行下面的代码,我将生成异常,但即使我将得到异常,我也希望跳过该循环,并希望执行保留代码,所以有任何方法吗

public class Test {

    public static void main(String[] args) {

        List<String> items = new ArrayList<>();
        items.add("1");
        items.add("2");
        items.add("3");
        items.add("4");
        items.add("5");

        try {
            items.forEach(item -> getData(item));
        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    public static void getData(String item) {
        System.out.println("====getData method called" + item + "====");
        if (item.equals("1")) {
            System.out.println(1 / 0);
        }



    }

}
公共类测试{
公共静态void main(字符串[]args){
列表项=新建ArrayList();
项目。添加(“1”);
项目。添加(“2”);
项目。添加(“3”);
项目。添加(“4”);
项目。添加(“5”);
试一试{
items.forEach(item->getData(item));
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void getData(字符串项){
System.out.println(“==getData方法,称为“+item+”==”);
如果(项目等于(“1”)){
系统输出打印项次(1/0);
}
}
}

将您的
移动到循环内,然后尝试
/
捕捉

    items.forEach(item -> {
        try {
            getData(item);
        } catch (Exception e) {
            e.printStackTrace();
        }
    });

您可以将try-catch放入可能发生异常的代码块的
getData
方法中,因此在这种情况下,如果发生任何异常,它将继续循环其他项:

public static void getData(String item) {
        try {
             System.out.println("====getData method called" + item + "====");
             if (item.equals("1")) {
                 System.out.println(1 / 0);
             }
        } catch (Exception e) {
            System.out.println("Exception at item: " + item);
            e.printStackTrace();
        } 
 }

不清楚的。是否要执行行
System.out.println(“执行剩余代码”)即使该行之前的3行代码引发异常?如果是这样,捕获异常。如果您希望在
getData(item)
引发异常的情况下执行循环的剩余迭代,请再次:将对getData()的调用包装在try块中,并捕获异常。如果在循环外部捕获异常,则已退出循环。如果在循环内捕获异常(例如,在
getData
内),可以继续循环。我只想忽略异常并执行循环以重新生成code@Tejal检查答案。它应该对你有用。