Ho un programma java interattivo che consente all'utente di inviare messaggi a un server, che si comporta come una shell, accetta l'input da tastiera dell'utente ed esegue varie azioni.Come arrestare correttamente un programma da riga di comando java
Per esempio
myProgram> send "Login as James" to server
Il mio programma analizzerà l'input dell'utente e eseguire l'azione, in questo caso, invierà il messaggio "Login come James" al server.
Uno del comando che supporto il suo "quit", che chiuderà tutta la connessione al server, ripulirà le risorse e spegnerà l'app. e il codice per la gestione di questo smettere di comando è
private void shutdown()
{
closeAllConnection();
cleanup();
System.out.println("Thank you for using the tool, have a nice day!");
System.exit(0);
}
Quando eseguo findbug contro il mio codice, un bug DM_EXIT è sollevata
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.
e si lamenta che System.exit non deve essere utilizzato per spegnere il programma.
Chiunque ha suggerimenti su come dovrei "Arrestare l'applicazione quando il mio programma riceve il comando 'quit'"?
se si posiziona la chiamata System.exit (0) alla fine del metodo principale, quindi findbugs non si lamenta. FindBugs sta solo dicendo che le chiamate System.exit non dovrebbero trovarsi in vari punti del tuo codice. – Mack