如何调用指定编号的方法发生异常的次数

How to recall a method specified no. of times when exception occurs

当一个方法出现异常时,我试图重新执行一个方法指定的次数, 但我无法重新执行该方法

    int maxretries=10;
    void show(){
         try{
        display();
       }
    catch(Exception e)
    {
     for(int i=1;i<maxretries;i++){
        display();//on first retry only I am getting exception
    }
    }
    }

当我 运行 第一次重试执行代码时出现异常,但我想重新执行 display() 方法,直到它以最大重试次数成功执行。

您在 catch 中编写的调用不在 try 中,因此它不会捕获异常。

您需要使用其他概念来执行此操作,或者再次调用整个函数,或者在 catch 中编写一个连续的 try 块(以及在该 catch 块中的另一个 try 块,等等),或者编写循环围绕整个 try 块(可能是最好的方法)。

这个怎么样:

int maxretries = 10;
for (int i = 0; i < maxretries; i++) {
    try {
        display();
        break;
    } catch (Exception e) {
        // log exception
        e.printStackTrace();
    }
}

在下面的程序中,我正在执行指定次数的重新运行方法,即使发生了 5 秒时间间隔的异常。

public class ReExecuteMethod {
    public static void main(String[] args) throws Exception {

        int count = 0;
        while (count <= 10) {
            try {
                rerun();
                break;
            } catch (NullPointerException e) {
                Thread.sleep(5000);
                System.out.println(count);
                count++;
            } 

        }
        System.out.println("Out of the while");
    }

    static void rerun() {
//      throw new NullPointerException();
        System.out.println("Hello");
    }
}