使用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检查答案。它应该对你有用。