当我在while循环中使用true时,我收到无法访问的代码编译错误 我的代码:
LoginService();
while(true)
{
//some stuff
}
LogoutService(); //getting compilation error Unreachable code
如何处理这种情况?
答案 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
语句后面的代码。这是一个编译错误。
如果由于无法执行语句,则是编译时错误 它无法到达。
本节致力于对该词的精确解释 “可达”。这个想法是必须有一些可能的执行 从构造函数,方法,实例的开头的路径 初始化程序,或包含语句的静态初始化程序 声明本身。分析考虑了结构 声明。除了while,do和for的特殊处理 条件表达式具有常量值true的语句 流分析中不考虑表达式的值。
因此,要解决您的问题,请使最后一个语句可访问。 例如:
LoginService();
while(true)
{
// ...
if (someCondition){
break;
}
}
LogoutService();