Ich habe ein interaktives Java-Programm, mit dem Benutzer Nachrichten an einen Server senden können, der sich wie eine Shell verhält, die Tastatureingaben akzeptiert und verschiedene Aktionen ausführt.Wie man ein Java-Befehlszeilenprogramm ordnungsgemäß herunterfährt
Zum Beispiel
myProgram> send "Login as James" to server
Mein Programm wird die Benutzereingabe analysieren und die Aktion, in diesem Fall durchführt, wird die Meldung „Login als James“ an den Server senden.
Einer der Befehle, die ich unterstütze seine "quit", die alle Server-Verbindung schließen wird, Ressourcen bereinigen und die App herunterfahren. und der Code für diese Behandlung beenden Befehl
private void shutdown()
{
closeAllConnection();
cleanup();
System.out.println("Thank you for using the tool, have a nice day!");
System.exit(0);
}
ist, wenn ich findbug gegen meinen Code ausführen, wird ein DM_EXIT Fehler wird
angehobenBug: 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.
und beschwert sich, dass System.exit sollte nicht zur Abschaltung verwendet werden, die Programm.
Jeder hat einen Vorschlag, wie soll ich "die Anwendung herunterfahren, wenn mein Programm den Befehl 'quit' erhält"?
Wenn Sie den System.exit (0) -Aufruf am Ende der Hauptmethode platzieren, dann reklamiert findbugs nicht. FindBugs sagt nur, dass die System.exit-Aufrufe nicht an verschiedenen Stellen in Ihrem Code sein sollten. – Mack