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 的最后一行。
添加回答
舉報