有 Java 编程相关的问题?

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

Java程序中的重试特定方法

我在下面有这段代码,在这段代码中,当程序出现任何异常时,它会重试整个程序。这似乎很有效。然而,当一个程序中有数百万个方法时,如果每次遇到异常时都重试整个程序,这似乎有点太多了

我想说的是,假设我在一个程序中有5个方法,方法1,方法2,方法3,方法4和方法5。如果发现方法3异常,它应该只重试方法3,而不是重试整个程序。同样,如果程序在方法5中出现错误,它应该只重试方法5

这是我到目前为止所拥有的。在这段代码中,如果检测到方法1、方法2、方法3、方法4或方法5,它将重新启动整个程序。我不想这样,我只想在方法中发现异常时重试。我不知道如何解决这个问题。我们将不胜感激。一些参考代码将非常有用,谢谢:)

测试。爪哇

public class Test {

     private static MAX_RETRIES = 3; 

     public static void main (String [] args) {

      int retryAttempt = 1;

      while (retryAttempt <= MAX_RETRIES) {

        try{
             method 1;
             method 2; 
             method 3; 
             method 4; 
             method 5;

             break;

        }catch(Exception e){


          e.printStackTrace();

              retryAttempt ++;

               if (retryAttempt == MAX_RETRIES){

                     //do something here 

                     return;
                }
         }
      }

    }
}

共 (2) 个答案

  1. # 2 楼答案

    您可以创建一个布尔数组,指示哪些方法是正确的。“ok”的意思是“方法没有任何问题”。因此,在调用“方法1”之前,请检查if(!isOk[1]) { method1(); isOk[1] = true;},其他方法也是如此

    你甚至可以做到:

    而不是:

    try{
                 method 1;
                 method 2; 
                 method 3; 
                 method 4; 
                 method 5;
    
                 break;
    
            }
    

    你可以做:

    try{
                 if(!isOk[1]) {method1(); isOk[1] = true;}
                 if(!isOk[2]) {method2(); isOk[2] = true;}
                 if(!isOk[3]) {method3(); isOk[3] = true;} 
                 if(!isOk[4]) {method4(); isOk[4] = true;} 
                 if(!isOk[5]) {method5(); isOk[5] = true;}
    
                 break;
    
            }
    

    当然,您必须创建:boolean isOk[] = new boolean[6];//或任何方法编号。 注意:为了确保它们最初是假的,您可以这样做:for(int i = 0; i < 6; i++) isOk[i] = false;