1 回答
TA贡献1856条经验 获得超5个赞
大多数长时间运行的系统都有某种顶级“无限”循环。我不认为这有什么大问题,但在政治上有些人不喜欢无限循环。
如果这是您的问题,请将布尔“运行”标志初始化为 true,使用 while(running) 而不是 System.exit() 将运行设置为 false。应该是一样的效果。
public static void main(String[] s)
{
Boolean running=true;
while(running) {
switch() {
...
case 5:
...
if(exitConditionsMet)
running=false;
…
}
}
return; // Just let main return to exit program.
}
从技术上讲,没有真正的区别,但有些人已经接受过扫描 while(true) 构造的培训,并将其称为问题。
标志方法有几个 SLIGHT 优势......
通过函数退出的控制流是意想不到的。如果您在非常高的级别扫描该代码只是为了寻找流控制(大括号和 if/while/for/break 类型构造),您不会立即看到该循环将永远退出。
出于同样的原因,一些静态分析工具可能会有些混乱。
通常应避免使用 System.exit(作为习惯问题,在本例中不是特指)。System.exit 可以强制容器(如 Tomcat)异常关闭,它还可以杀死可能正在做一些重要事情的线程(除非你需要向命令行返回一个值,这意味着你需要一个系统。 exit() 但可能想让它成为你的 main.exit 的最后一行。
添加回答
举报