有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

对不起,如果我的标题有点混乱

我的程序正在进行一些web抓取,因此将捕获一些SocketTimeoutException,这是由于随机网络条件造成的。现在,当捕捉到SocketTimeoutException时,将跳过该特定循环,因此我将丢失一些数据。我确信当跳过的循环中的代码再次运行时,一切都会很好。由于我正在抓取大量数据(>;100万组数字),我不想记录异常循环并再次手动运行它们。在捕获异常时,有没有办法再次运行相同的循环

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

共 (5) 个答案

  1. # 1 楼答案

    只需将try-catch放入循环中即可

    for () {
    
      try {
        // somecode
        // ..
      } catch ( IOException ioException ) {
        // handle
      }
    
    }
    
  2. # 2 楼答案

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

    for(){
         try{
             // someCode
         }catch(IOException e){
            //handle exception if necessary
         }
    }
    
  3. # 3 楼答案

    你一定在这么做。一定要试着在圈内接球

    for(){
        try { 
                someCode
                ...
        } catch(IOException){
        }
    }
    
  4. # 4 楼答案

    如果您想重做相同的循环迭代:

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

    但要小心无限循环!您应该添加一个最大值管理

  5. # 5 楼答案

    这有个问题,

    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
          }
    
        }