如何随时在java中停止或终止while循环

时间:2018-03-30 07:12:57

标签: java exception while-loop

当我在while循环中使用true时,我收到无法访问的代码编译错误 我的代码:

LoginService();

while(true)
{
   //some stuff
}

LogoutService(); //getting compilation error Unreachable code

如何处理这种情况?

5 个答案:

答案 0 :(得分:0)

由于你在while循环中的真实条件,你有一个无限循环,你得到了这个错误。您应该重新评估while循环的原因并提供适当的退出。

答案 1 :(得分:0)

您看到此错误,因为编译器检测到无限循环。要解决此问题,请尝试使用此版本,该版本使用布尔变量来控制循环执行:

LoginService();
boolean flag = true;

while (flag) {
    //some stuff

    if (condition) {
        flag = false;
    }
}

LogoutService();

这可以修复您的编译器错误,并使您的逻辑显式为循环应该继续执行。

答案 2 :(得分:0)

尽可能(我建议永远不要)使用while(true)

只需将退出条件放入您的行程中:

boolean exitLoop = false;
while(!exitLoop){ /*do stuff*/}

答案 3 :(得分:0)

您的while(true)永远不会结束,因此永远不会调用LogoutService()!有一些打破循环的逻辑。

答案 4 :(得分:0)

内部没有while(true){...}

break表示永远无法访问while语句后面的代码。这是一个编译错误。

  

14.21. Unreachable Statements

     

如果由于无法执行语句,则是编译时错误   它无法到达。

     

本节致力于对该词的精确解释   “可达”。这个想法是必须有一些可能的执行   从构造函数,方法,实例的开头的路径   初始化程序,或包含语句的静态初始化程序   声明本身。分析考虑了结构   声明。除了while,do和for的特殊处理   条件表达式具有常量值true的语句   流分析中不考虑表达式的值。

因此,要解决您的问题,请使最后一个语句可访问。 例如:

LoginService();

while(true)
{
    // ...
    if (someCondition){
        break;
    }
}

LogoutService();