我如何"重试"尝试捕获?

the*_*edi 1 java exception-handling

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

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

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

Bat*_*eba 8

我宁愿看到一个do默认退出的循环(然后遇到无限循环的可能性更小).您使用的boolean类型才真正模仿的行为breakcontinue.作为替代方案,也许更自然的方式,考虑一下

do {
    try {
        // some code 
    } catch (/*whatever*/){
        continue; // go again
    }
    break;
} while (true);
Run Code Online (Sandbox Code Playgroud)