0

我有一个 While 循环,其中有一个 try catch 块。如何在 catch 语句中添加 break 语句来中断 while 循环。我不想使用 DO-WHILE 循环,因为我只有几分钟的时间来提交我的代码,而且我不想通过进行更改来破坏程序。但是,稍后我将考虑使用 DO-WHILE 语句更改代码。

while (true) {
try {
// something here
} catch (Exception e) {

// I need to break the forever while loop here
}
}
4

8 回答 8

8
try {
// something here
    while (true) {
    // While body here.
    }
} catch (Exception e) {

// I need to break the forever while loop here
}
} 

您可以在 try catch 主体内移动 while 循环。这将以编程方式执行完全相同的操作,但所有错误都将被捕获,并且无需等待。这看起来好多了,并且更具语义意义。

此外,只需在 catch 块中添加单词break;,它就会停止循环的运行。

于 2013-03-12T07:49:22.340 回答
3

只需在 catch 块中添加一个 break 语句

于 2013-03-12T07:49:01.973 回答
0

那么有多种方法

Approach1 - 通过反转 While Condition 变量

boolean notDone = true;
while(notDone) {
    try {
    // something here
    } catch (Exception e) {             
        notDone = false;
    }
}

方法 2 - 使用 break 语句

while(notDone) {
    try {
    // something here
    } catch (Exception e) {
        break;
    }
}

方法 3 - 将 catch 块移到 while 之外

try {
        while(notDone) {

        }       
    } catch (Exception e) {

    }       
于 2013-03-12T08:02:14.623 回答
0

如何在 catch 语句中添加 break 语句来中断 while 循环

就那样做吧。break在语句中添加catch语句。它会跳出while循环。

不是一个真正的问题。

于 2013-03-12T09:31:59.593 回答
0

除非您在 catch 子句中有另一个循环(这很奇怪),否则只需使用break;.

try-catch 不是循环,因此 break 会影响第一个包含循环,这似乎是 while。

于 2013-03-12T07:50:00.130 回答
0

它会起作用的。

但是你应该做的是离开循环,因为你有一个例外,比如:

try {
    while (true) {
        // something here
    }
} catch (Exception e) {
    // Do whatever in the catch
} 
于 2013-03-12T07:50:38.773 回答
0

您可以在 while 循环中引入一个布尔变量,该变量最初为 true,然后在 try 或 catch 语句中的任何位置设置为 false。这样,即使里面有嵌套循环,你也可以打破你给出的循环。

boolean notDone = true;
while(notDone) {
try {
// something here
} catch (Exception e) {
// I need to break the forever while loop here
notDone = false;
}

您可以使用反向版本,使用“完成”布尔值代替。这导致您需要在每次迭代的 while 循环内调用反转。这是次要性能和提高代码可读性之间的权衡。

于 2013-03-12T07:54:16.170 回答
-1

只需命名你的循环并打破它
例如

Lable:
while (true) {
    try {
        // something here

    } catch (Exception e) {
        //  I need to break the forever while loop here
        break Lable;
    }
}
于 2013-03-12T07:56:57.123 回答