Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Java:使方法在异常后继续_Java_Exception - Fatal编程技术网

Java:使方法在异常后继续

Java:使方法在异常后继续,java,exception,Java,Exception,我有一些从Excel文件读取的代码,在每一行之后使用逻辑层的addValue方法将数据添加到数据库中 现在我有一个循环,它穿过行,还有一个穿过单元格。 从Excel中读取表行后,它会执行addValue方法,如果出现错误,该方法本身会引发异常 程序现在所做的是,当第一个异常出现时,它停止,例如,如果损坏的数据位于Excel文件的中间,它会导入所有的内容,直到达到损坏的数据并停止。 捕获addValue引发的异常后,如何使其继续 try { //

我有一些从Excel文件读取的代码,在每一行之后使用逻辑层的addValue方法将数据添加到数据库中

现在我有一个循环,它穿过行,还有一个穿过单元格。 从Excel中读取表行后,它会执行addValue方法,如果出现错误,该方法本身会引发异常

程序现在所做的是,当第一个异常出现时,它停止,例如,如果损坏的数据位于Excel文件的中间,它会导入所有的内容,直到达到损坏的数据并停止。

捕获addValue引发的异常后,如何使其继续

      try {
                    // abfangen des ersten durchlaufes 
                    if (id == -1) {
                    } else {
                        /*
                         * java.lang.System.out.println(name);
                         * java.lang.System.out.println(id);
                         * java.lang.System.out.println(value);
                         * java.lang.System.out.println(comment);
                         */
                        java.lang.System.out.println("value"+ value);
                        sysInterface.addValue(ident, name, value, comment);

                        workbook.close();
                    }

                } catch (LogicException | IOException e) {
                    
                    
                    Alert alert = new Alert(AlertType.INFORMATION);
                    alert.setTitle("Error Dialog");
                    alert.setHeaderText("Adding Value unsuccessful!");

                    alert.setContentText(e.getMessage()
                            + " Import aborted. \nClassificationNumber " 
      +name+ " has to be in Database before importing.");

                    alert.showAndWait();
                    return;

                }
            }

此块在循环中运行的次数与Excel表的行数相同。

如果该块在循环中,那么我假设您真正想要说的是“尝试此操作,但捕获任何异常,然后跳过有问题的记录并继续循环”


如果是这样,只需将“return”语句更改为“continue”。Continue关键字表示“跳过循环这一步中的其余执行,转到下一步。

不要忘记,您还有“finally”情况,在调用并捕获错误后,您可以从中断处重复

简短示例:
您认为
return;
行正在做什么?如果您遇到IOException,您不应该尝试继续读取。如果文件无法读取,您认为第二次尝试可以读取它是什么原因?建议
继续
这是不明智的。
继续
中断了“流程”通过该方法,并有效地禁用IDE的自动重构。在编写Java的15年多时间里,我从未需要使用
continue
。OP展示的更好的解决方案是删除
return
语句。就是这样!谢谢:)我第一次也想到了类似的事情,但似乎有点想得太远了。“continue”关键字成功了。无论如何,谢谢:)正如另一位用户早些时候建议的,“继续”可能会导致IDE出现问题。如果答案对你有帮助,我请你批准。
public foo bar(){
    try{
        // try here
    } catch(Exception here){ 
        //handle here
    }
    finally{ 
        /*
        * you can return to your loop after the exception has been caught, from 
        * here by calling it again, recursively */
    }
}