如何调用指定编号的方法发生异常的次数
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");
}
}
当一个方法出现异常时,我试图重新执行一个方法指定的次数, 但我无法重新执行该方法
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");
}
}