簡體   English   中英

如何從程序中退出Java應用程序

[英]How to quit a java app from within the program

使用代碼退出Java應用程序的最佳方法是什么?

您可以使用System.exit()來實現此目的。

根據oracle的Java 8文檔:

public static void exit(int status)

終止當前運行的Java虛擬機。 該參數用作狀態代碼; 按照慣例, 非零狀態代碼表示異常終止

此方法在類Runtime中調用exit方法。 此方法永遠不會正常返回。

調用System.exit(n)實際上等同於調用:

Runtime.getRuntime().exit(n)

System.exit(0);

“0”讓任何一個叫你程序的人知道一切都好了。 但是,如果由於錯誤而退出,則應該使用System.exit(1); ,或與對應於特定錯誤的另一個非零數字。

另外,正如其他人提到的那樣,先清理干凈! 這涉及關閉文件和其他開放資源。

將使用System.exit(int i) ,但我會將其包含在更通用的shutdown()方法中,其中您還將包括“清理”步驟,關閉套接字連接,文件描述符, 然后退出System.exit(x)

System.exit()通常不是最好的方法,但它取決於您的應用程序。

結束應用程序的常用方法是退出main()方法。 當運行其他非deamon線程時,這不起作用,這對於具有圖形用戶界面(AWT,Swing等)的應用程序來說是常見的。 對於這些應用程序,您要么找到結束GUI事件循環的方法(不知道是否可以使用AWT或Swing),或者調用System.exit()

使用dispose(); 是關閉程序的一種非常有效的方法。

我發現使用System.exit(x)重置了交互窗格,並假設您需要一些信息,它們都會消失。

我同意Jon,讓你的應用程序對某些事情做出反應並調用System.exit()。

請確保:

  • 您使用適當的退出值。 0表示正常退出,其他任何表示都有錯誤
  • 關閉所有輸入和輸出流。 文件,網絡連接等
  • 您記錄或打印退出的原因,尤其是因為錯誤

答案是System.exit(),但這不是一件好事,因為這會中止程序。 任何清理,破壞你打算做的事都不會發生。

這個問題有兩個簡單的答案。

這是“專業方式”:

//This just terminates the program.
System.exit(0);

這是一種更笨拙的方式:

//This just terminates the program, just like System.exit(0).
return;
Runtime.getCurrentRumtime().halt(0);

System.exit()會做你想要的。 但在大多數情況下,您可能希望退出一個線程,並使主線程保持活動狀態。 通過這樣做,您可以終止任務,但也可以在不重新啟動應用程序的情況下啟動其他任務。

System.exit(ABORT); 立即退出流程。

這應該以正確的方式做到:

mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {

@Override
public void windowClosing(WindowEvent e) {
    if (doQuestion("Really want to exit?")) {
      mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mainFrame.dispose();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM