首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何“重试”try-catch?

如何“重试”try-catch?
EN

Stack Overflow用户
提问于 2016-02-16 16:13:46
回答 6查看 10.4K关注 0票数 4

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

代码语言:javascript
复制
for (bool isSuccess = false; !isSuccess;) {
    try {
        ...
        isSuccess = true;
    }
    // catch blocks here to correct any exceptions thrown
}

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

EN

回答 6

Stack Overflow用户

发布于 2016-02-16 16:19:50

我更希望看到一个默认退出的do循环(这样就不太可能遇到无限循环)。您使用的boolean类型实际上只是模仿了breakcontinue的行为。作为另一种选择,也许是更自然的方式,考虑

代码语言:javascript
复制
do {
    try {
        // some code 
    } catch (/*whatever*/){
        continue; // go again
    }
    break;
} while (true);
票数 12
EN

Stack Overflow用户

发布于 2016-02-16 16:23:08

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

代码语言:javascript
复制
public void doSomething() {
    try {
       ...
    } catch(Exception e) {
       doSomething();
    }
}
票数 4
EN

Stack Overflow用户

发布于 2016-02-16 16:20:07

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

代码语言:javascript
复制
while(!isSuccess){
    try{
        //DO Stuff
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35427101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档