ユーザーがシェルのように動作し、ユーザーのキーボード入力を受け入れてさまざまなアクションを実行するサーバーにメッセージを送信できるインタラクティブなJavaプログラムがあります。
例えば
myProgram> send "Login as James" to server
私のプログラムはユーザー入力を解析し、アクションを実行します。この場合、「Login as James」というメッセージをサーバーに送信します。
すべてのサーバー接続を閉じ、リソースをクリーンアップし、アプリをシャットダウンする「quit」をサポートするコマンドの 1 つです。この終了コマンドを処理するコードは次のとおりです。
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 を使用してプログラムをシャットダウンしないでください。
「プログラムが「終了」コマンドを受け取ったときにアプリケーションをシャットダウンする」方法について、誰か提案がありますか?