捕获异常而不是继续时,是否可以在循环中再次迭代?

时间:2012-12-18 09:07:53

标签: java exception loops try-catch iteration

很抱歉,如果我的标题有点令人困惑。

我的程序正在进行一些Web抓取,因此会因随机网络条件而捕获一些SocketTimeoutException。现在当捕获到SocketTimeoutException时,将跳过该特定循环,因此我将遗漏一些数据。我确信当跳过循环中的代码再次运行时,一切都会好起来的。当我正在抓取大量数据(> 100万套数字)时,我不想记录异常循环并再次手动运行它们。有没有办法在捕获异常时再次运行相同的循环?

try{
    for(){
        someCode
        ...
    }
}catch(IOException){
}

5 个答案:

答案 0 :(得分:4)

只需将try - catch放入循环

即可
for () {

  try {
    // somecode
    // ..
  } catch ( IOException ioException ) {
    // handle
  }

}

答案 1 :(得分:2)

为什么不将异常处理放在循环中

for(){
     try{
         // someCode
     }catch(IOException e){
        //handle exception if necessary
     }
}

答案 2 :(得分:1)

你必须这样做。试着抓住循环内部。

for(){
    try { 
            someCode
            ...
    } catch(IOException){
    }
}

答案 3 :(得分:1)

我想重做相同的循环迭代:

int i = 0;
int n = 15; // your n
for (i = 0; i < n; i++) {
    try {
        // some code
    } catch (Exception e) {
        i--;
    }
}

但要注意无限循环!您应该添加MAX_TRIES管理。

答案 4 :(得分:1)

这有问题,

try{
    for(){
    //    someCode
        ...
    }
}catch(IOException){
  // Once exception happens your for() loop breaks !!!!!
}

相反,这样做......

 for () {

      try {
        // somecode
        // ..
      } catch ( IOException ioException ) {
        // handle(do something) here, not throwing error which will break the loop
      }

    }