Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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_Networking - Fatal编程技术网

Java 处理由网络波动引起的读取超时

Java 处理由网络波动引起的读取超时,java,networking,Java,Networking,我有一个java应用程序,它从sql 2008数据库中读取记录(要读取的记录数是可配置的)。 并处理它们,这是在一个无限循环中完成的,只有当应用程序手动停止时才会停止 我在这里面临的问题是,当我遇到读取超时错误时,应用程序停止从数据库中获取记录。 我猜这是因为网络的波动 从数据库读取的代码写在try-catch块中。因此,当错误发生时,它会被记录,但也会停止。 我不知道如何处理这种情况,并使应用程序连续运行,尽管有错误。 请告诉我如何处理此错误,以便我的应用程序继续运行。阅读时,您应该存储有关停

我有一个java应用程序,它从sql 2008数据库中读取记录(要读取的记录数是可配置的)。 并处理它们,这是在一个无限循环中完成的,只有当应用程序手动停止时才会停止

我在这里面临的问题是,当我遇到读取超时错误时,应用程序停止从数据库中获取记录。 我猜这是因为网络的波动

从数据库读取的代码写在try-catch块中。因此,当错误发生时,它会被记录,但也会停止。 我不知道如何处理这种情况,并使应用程序连续运行,尽管有错误。
请告诉我如何处理此错误,以便我的应用程序继续运行。

阅读时,您应该存储有关停止位置的信息,并在连接无法继续后重新设置连接

像这样:

boolean programRuns = true; // set this to false at the end

public void doMyStuff() {
    int myLastPosition = 0;
    while(programRuns) {
         try {
             Connection con = /* open your connection */
             String statement = /* your statement */ + "WHERE id > " + myLastPosition;
             PreparedStatement pstmt = /* prepare your statement */
             while(true) {
                 ResultSet rs = pstmt.executeQuery();
                 myLastPosition = rs.getInt("id");
                 /* do whatever you want with the result */
             }
         } catch (Exception ex) { /* handle the exception */ }
    }
}

保存光标怎么样?如果调用了catch块代码,请从光标位置重新运行该函数?如果您添加更多代码,答案可能会有所改进:)@sonu如果我的解决方案解决了您的问题,请将其标记为正确(钩子在答案的左侧)。如果没有,请自己发布正确答案。