当我运行脚本时,浏览器会继续打开新标签,直到我在任务管理器中结束该过程。这个循环不应该只打开一次浏览器吗?即使你忽略了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();
}
}
答案 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
的调用引发异常,则永远不会设置退出标记。
你为什么要在循环中这样做?如果您的意图只是执行此步骤一次,请将其作为语句执行一次,而不是使用流控制结构。