我怎样才能重试"试一试?

时间:2016-02-16 08:13:46

标签: java exception-handling

在我的代码中,我将在try-block中尝试某个任务。如果抛出异常,catch-blocks将纠正遇到的错误(通常会提示输入正确)。之后,该程序应该重复尝试,直到成功。我目前的代码如下:

for (bool isSuccess = false; !isSuccess;) {
    try {
        ...
        isSuccess = true;
    }
    // catch blocks here to correct any exceptions thrown
}

可以看出,我目前正在使用循环结构来使try-catch块在try块失败时重新开始,直到try块完全成功。有更优雅的解决方案吗?

6 个答案:

答案 0 :(得分:8)

我更喜欢看到默认退出的do循环(然后遇到无限循环的可能性较小)。您对boolean类型的使用仅限于breakcontinue的行为。作为替代方案,也许更自然的方式,考虑

do {
    try {
        // some code 
    } catch (/*whatever*/){
        continue; // go again
    }
    break;
} while (true);

答案 1 :(得分:3)

只是为了给你一个替代方案,如果你的代码允许你这样做,那么你也可以使用递归。但在我看来,与其他解决方法相比,这种做法并不那么有利。

public void doSomething() {
    try {
       ...
    } catch(Exception e) {
       doSomething();
    }
}

答案 2 :(得分:0)

您可以简单地使用while循环。

while(!isSuccess){
    try{
        //DO Stuff
    }
}

答案 3 :(得分:0)

我认为您应该定义最多的尝试次数。否则,在最糟糕的情况下,当所有失败发生时,您的应用程序将被冻结。

答案 4 :(得分:0)

您可以使用while循环

进行此操作
boolean isSuccess = false;
while(!isSuccess) { // loop till to isSuccess become true
    try {
        ....
        isSuccess = true;
    } catch (Exception e) {
        // Some Exception accrued, you can have 2 options
        // 1. break the loop with break;
        // 2. continue the process
    }
}

答案 5 :(得分:0)

您也可以使用递归来执行此操作。但我认为这不会有效。做......虽然这是最好的方法。