在我的代码中,我将尝试try-block中的某个任务。如果抛出异常,catch块将纠正遇到的错误(通常会提示正确的输入)。在此之后,程序应该反复尝试,直到成功为止。我当前的代码如下:
for (bool isSuccess = false; !isSuccess;) {
try {
...
isSuccess = true;
}
// catch blocks here to correct any exceptions thrown
}可以看出,如果try块失败,我当前正在使用循环结构使try-catch块重新开始,直到try块完全成功。有没有更优雅的解决方案?
发布于 2016-02-16 16:19:50
我更希望看到一个默认退出的do循环(这样就不太可能遇到无限循环)。您使用的boolean类型实际上只是模仿了break和continue的行为。作为另一种选择,也许是更自然的方式,考虑
do {
try {
// some code
} catch (/*whatever*/){
continue; // go again
}
break;
} while (true);发布于 2016-02-16 16:23:08
只是为了给你另一种选择,如果你的代码允许这样做,那么你也可以使用递归。但在我看来,与解决这个问题的其他方法相比,这是不太有利的。
public void doSomething() {
try {
...
} catch(Exception e) {
doSomething();
}
}发布于 2016-02-16 16:20:07
您可以简单地使用while循环。
while(!isSuccess){
try{
//DO Stuff
}
}https://stackoverflow.com/questions/35427101
复制相似问题