2012-11-02 49 views

回答

9

如果您的Java代碼System.exit(status)退出,你可以得到的地位猛砸這樣的:

的Java:

public class E { 
    public static void main(String[] args) { 
     System.exit(42); 
    } 
} 

擊:

$ java E 
$ echo $? 
42 

$?是最後完成的過程的退出狀態。

+0

是否有任何其他方式來捕獲狀態,因爲在java System.exit()是不正常的退出方式。 – vino

+1

你可以使用echo $?來捕獲狀態,即使java程序不能用System.exit()退出,默認情況下它會在程序正常退出時返回0(意味着成功)狀態到操作系統。 – Stauz

2

java程序應該以Sytem.exit(status)結束。該號碼作爲操作系統中的其他命令返回。

0

正如其他人所說的,您需要使用System.exit()來獲得所需的輸出。這背後的原因是System.exit()直接終止程序並退出返回定義的值。

如果你想知道爲什麼我們不能從main方法返回什麼,答案是 - 在java中main方法永遠不會返回任何東西,如果你分析黃金需聲明

public static void main() 

你會看到,在java main中有一個返回類型爲void。因此,如果您正在從調用程序(本例中爲Shell)檢查Java程序的返回狀態,則您試圖實際讀取jvm的退出狀態,而不是正常情況下的java程序的退出狀態如果程序因任何異常而崩潰,條件始終爲零(0)甚至很難。只有當jvm由於意外原因(如OutOfMemory或類似的關鍵因素)而崩潰時纔會得到非零退出狀態。

希望這有助於你理解捕捉java程序的退出狀態。