1 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
大多數(shù)長時(shí)間運(yùn)行的系統(tǒng)都有某種頂級(jí)“無限”循環(huán)。我不認(rèn)為這有什么大問題,但在政治上有些人不喜歡無限循環(huán)。
如果這是您的問題,請(qǐng)將布爾“運(yùn)行”標(biāo)志初始化為 true,使用 while(running) 而不是 System.exit() 將運(yùn)行設(shè)置為 false。應(yīng)該是一樣的效果。
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.
}
從技術(shù)上講,沒有真正的區(qū)別,但有些人已經(jīng)接受過掃描 while(true) 構(gòu)造的培訓(xùn),并將其稱為問題。
標(biāo)志方法有幾個(gè) SLIGHT 優(yōu)勢(shì)......
通過函數(shù)退出的控制流是意想不到的。如果您在非常高的級(jí)別掃描該代碼只是為了尋找流控制(大括號(hào)和 if/while/for/break 類型構(gòu)造),您不會(huì)立即看到該循環(huán)將永遠(yuǎn)退出。
出于同樣的原因,一些靜態(tài)分析工具可能會(huì)有些混亂。
通常應(yīng)避免使用 System.exit(作為習(xí)慣問題,在本例中不是特指)。System.exit 可以強(qiáng)制容器(如 Tomcat)異常關(guān)閉,它還可以殺死可能正在做一些重要事情的線程(除非你需要向命令行返回一個(gè)值,這意味著你需要一個(gè)系統(tǒng)。 exit() 但可能想讓它成為你的 main.exit 的最后一行。
添加回答
舉報(bào)