循环不在Java类中退出

时间:2016-05-18 09:24:27

标签: java loops

当我运行脚本时,浏览器会继续打开新标签,直到我在任务管理器中结束该过程。这个循环不应该只打开一次浏览器吗?即使你忽略了while循环而只关注浏览器请求,我也会得到相同的行为。这与try / catch有关吗?这里出了什么问题?

Desktop d = Desktop.getDesktop();       

Boolean doOnce = false;

while (doOnce == false) {
    try {
        d.browse(new URI("http://localhost"));
        doOnce = true;
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:2)

如果d.browse(....)抛出异常,doOnce = true将永远不会执行。

将doOnce = true移动到finally块中,它应该可以工作。

答案 1 :(得分:2)

如果你只想在while中执行一次try / catch块,你应该将doOnce放在finally块中:

try 
{
    d.browse(...);
} catch (URISyntaxException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}finally{
doOnce = true;
}

但是如果你想在发生异常时退出while,你应该把它放在catch块中:

try 
{
    d.browse(...);
} catch (URISyntaxException e) {
     doOnce = true;
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 2 :(得分:1)

try 
{
    d.browse(...);
    doOnce = true;
} catch (URISyntaxException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

如果您对browse的调用引发异常,则永远不会设置退出标记。

你为什么要在循环中这样做?如果您的意图只是执行此步骤一次,请将其作为语句执行一次,而不是使用流控制结构。