Qual è il modo migliore per uscire da un'applicazione Java con il codice?Come uscire da un'app java dal programma
risposta
È possibile utilizzare System.exit()
per questo scopo.
Secondo la documentazione Java 8 di Oracle:
public static void exit(int status)
Termina l'attualmente in esecuzione Java Virtual Machine. L'argomento funge da codice di stato; per convenzione, un codice di stato diverso da zero indica una terminazione anomala.
Questo metodo chiama il metodo exit in classe Runtime. Questo metodo non ritorna mai normalmente.
La chiamata
System.exit(n)
è effettivamente equivalente alla chiamata:
Runtime.getRuntime().exit(n)
System.exit(0);
Lo "0" lascia chiunque chiama il programma di sapere che tutto è andato bene. Se, tuttavia, si esce a causa di un errore, è necessario System.exit(1);
o con un altro numero diverso da zero corrispondente all'errore specifico.
Inoltre, come altri hanno già detto, pulire prima! Ciò comporta la chiusura di file e altre risorse aperte.
ho pensato che fosse System.exit (1)? – AFK
Come dice Chris, 'System.exit (1)' (o qualsiasi altro numero) è se si vuole indicare che è stato chiuso a causa di un errore. 'System.exit (0)' indica che il programma si è chiuso normalmente. Puoi anche modificare 1 in qualsiasi numero che ti piace, quindi quando esegui la tua applicazione da uno script puoi determinare se c'è stato un errore. – StormPooper
Sono d'accordo con Jon, fa reagire la tua applicazione a qualcosa e chiama System.exit().
Assicurarsi che:
- si utilizza il valore di uscita appropriato. 0 è uscita normale, qualsiasi altra indicazione indica che si è verificato un errore
- chiude tutti i flussi di input e output. I file, connessioni di rete, ecc
- si accede o si stampa un motivo per uscire, soprattutto se la sua causa di un errore
System.exit()
di solito non è il modo migliore, ma dipende dalla vostra applicazione.
Il modo normale di terminare un'applicazione è uscire dal metodo main()
. Questo non funziona quando ci sono altri thread non-deamon in esecuzione, come avviene normalmente per le applicazioni con un'interfaccia utente grafica (AWT, Swing, ecc.). Per queste applicazioni, è possibile trovare un modo per terminare il loop degli eventi della GUI (non so se è possibile con AWT o Swing) o invocare System.exit()
.
System.exit(int i)
deve essere utilizzato, ma vorrei includerlo all'interno di un shutdown()
metodo più generico, in cui si desidera includere passi "pulizia" e, chiudendo le connessioni socket, descrittori di file, poi escono con System.exit(x)
.
La risposta è System.exit(), ma non è una buona cosa da fare in quanto ciò interrompe il programma. Qualsiasi ripulitura, distruzione che intendi fare non accadrà.
Utilizzare dispose();
è un modo molto efficace per chiudere i programmi.
Ho scoperto che l'utilizzo di System.exit(x)
reimposta il riquadro delle interazioni e supponendo di aver bisogno di alcune informazioni lì tutto scompare.
Runtime.getCurrentRumtime().halt(0);
Migliore: Runtime.getRuntime(). Halt (0); Ha funzionato perfettamente per me in Scala! –
@GerhardHagerer ma cosa succede se si ottiene il runti non corrente, io? –
Da Javadoc per 'halt':" Questo metodo deve essere usato con estrema cautela.A differenza del metodo 'exit', questo metodo non causa l'avvio di hook di shutdown e non esegue i finalizzatori non avviati se finalization-on-exit è stato abilitato.Se la sequenza di spegnimento è già stata avviata, questo metodo non attende l'esecuzione di hook o finalizzatori di spegnimento in esecuzione. " In breve, non dovresti aver bisogno di usare "halt", dovresti preferire "exit". –
System.exit (ABORT); Esci immediatamente.
Non esiste una variabile come ABORT. –
Ci sono due semplici risposte alla domanda.
Questo è il "modo professionale":
//This just terminates the program.
System.exit(0);
Si tratta di un modo più goffo:
//This just terminates the program, just like System.exit(0).
return;
'System.exit (0); return: 'è buono, il return impedisce l'esecuzione di qualsiasi codice ruther prima che il sistema possa uscire, altrimenti avresti bisogno di un flag (..' vale a dire (! called_exit) {ulteriore codice dopo l'exit statement} ' – ycomp
Questo dovrebbe farlo nel modo corretto:
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();
}
}
System.exit()
farà quello che vuoi Ma nella maggior parte delle situazioni, probabilmente vuoi uscire da un thread e lasciare in vita il thread principale. In questo modo, è possibile interrompere un'attività, ma anche mantenere la possibilità di avviare un'altra attività senza riavviare l'app.
- 1. Come uscire da un metodo senza uscire dal programma?
- 2. Uscire dal programma in smalltalk?
- 3. Come uscire dal programma Haxe/OpenFL?
- 4. Attendere System.Threading.Timer Callbacks da completare prima di uscire dal programma
- 5. Come posso uscire dal programma in try/except?
- 6. Modo corretto per uscire dal programma della riga di comando?
- 7. Come uscire da un programma batch in caso di errore?
- 8. Come uscire da pdb e consentire al programma di continuare?
- 9. eseguire un programma Java dal nostro programma Java
- 10. Come posso uscire solo dal mio sottoprogramma, non dall'intera VM?
- 11. gdb: uscita programma senza uscire gdb
- 12. Come uscire da beeline?
- 13. Come uscire da html?
- 14. Come uscire da setInterval
- 15. Modo corretto per uscire da un programma Qt?
- 16. come uscire dal blocco "if" in VB.NET
- 17. Esecuzione di un programma java da un altro programma java
- 18. Git diff - come uscire dal listato diff
- 19. Come uscire dal blocco di codice PHP?
- 20. Posso fare uscire ipython dal codice chiamante?
- 21. Come uscire da questo ciclo
- 22. Come uscire dal ciclo di leva
- 23. Come uscire dal doppio trattino nel markdown?
- 24. Come uscire dal percorso contenente spazi
- 25. come eseguire un comando al terminale dal programma java?
- 26. Come uscire da cicli annidati?
- 27. Come uscire da un'istruzione using
- 28. Come uscire da una funzione
- 29. Sencha: Come uscire da Ext.each
- 30. Come uscire da Vim quickfix?
Hmm. Penso che la domanda potrebbe essere troppo generale. Esci in quali circostanze? –
Lascia che tutti i tuoi thread non daemon finiscano normalmente? –
Solo per chiudere in genere – Olaseni