我有一個交互式java程序,允許用戶發送消息到服務器,其行爲有點像一個shell,接受用戶的鍵盤輸入並執行各種操作。如何正確關閉一個java命令行程序
例如
myProgram> send "Login as James" to server
我的程序將分析用戶輸入並執行行動,在這種情況下,它會發送消息「登錄爲詹姆斯」到服務器。
我支持其「退出」命令之一,它將關閉所有服務器連接,清理資源並關閉應用程序。並處理這個代碼quit命令是
private void shutdown()
{
closeAllConnection();
cleanup();
System.out.println("Thank you for using the tool, have a nice day!");
System.exit(0);
}
當我對我的代碼findbug運行,一個DM_EXIT錯誤引發
Bug: new myProgram.messagingTools.main(String[]) invokes System.exit(...), which shuts down the entire virtual machine
Pattern id: DM_EXIT, type: Dm, category: BAD_PRACTICE
Invoking System.exit shuts down the entire Java virtual machine. This should only been done when it is appropriate. Such calls make it hard or impossible for your code to be invoked by other code. Consider throwing a RuntimeException instead.
,並抱怨說,System.exit不應該被用來關閉程序。
任何人都應該如何「我的程序收到'quit'命令時關閉應用程序」?
如果將System.exit(0)調用放在main方法的末尾,findbugs不會抱怨它。 FindBugs只是說System.exit調用不應該在代碼的不同位置。 – Mack 2014-06-04 14:27:17