Ho bisogno di registrare un registro se il programma è uscito improvvisamente o con qualsiasi eccezione. Ad esempio, quando qualcuno preme Ctrl+C
durante l'esecuzione del programma, ho bisogno di accedere che è stato interrotto bruscamente. Come posso fare questo?È possibile fare qualcosa quando il programma Java si interrompe bruscamente?
6
A
risposta
9
Per questo è possibile provare e utilizzare uno shutdown hook. Dalla documentazione, il gancio verrà eseguito nei seguenti casi:
- il programma esce normalmente
- La VM viene terminata
Questo copre la vostra situazione ^C
, ma dubbioso coprire situazioni come la macchina scollegata (salvo qualche tipo di hardware ridondante sulla macchina).
Here sono alcune note sul design.
esempio Crude:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("System was shutdown");
}
});
Problemi correlati
- 1. Il programma termina bruscamente anche nel debugger - come è successo?
- 2. Il programma "si" è usato per qualcosa di significativo?
- 3. L'attività in background si interrompe quando il dispositivo è bloccato?
- 4. Come rilevare quando un'applicazione si interrompe?
- 5. Come fare un oggetto JMenu fare qualcosa quando viene cliccato
- 6. jQuery interrompe il video HTML5 quando è nascosto, si riavvia quando è visibile
- 7. Java: fare qualcosa x percento delle volte
- 8. Cosa fare quando si utilizza Contract.Assert (true) e il metodo deve restituire qualcosa?
- 9. Come ripulire il programma quando si esce dal programma javafx?
- 10. Fare clic su OPPURE, quindi fare qualcosa
- 11. Perché il seguente codice si interrompe javac? Cosa si può fare al riguardo?
- 12. L'uso di gdb interrompe il programma quando utilizza qualsiasi funzione dal file X
- 13. L'applicazione Qt multithread non si interrompe quando si esce
- 14. programma esterno di arresto quando il programma Java viene arrestato
- 15. arrestare il server di sviluppo quando si interrompe il debug
- 16. Perché non si interrompe Visual Studio quando si verificano eccezioni?
- 17. È possibile eseguire il debug di core dump quando si utilizza Java JNI?
- 18. È possibile scrivere direttamente un programma con istruzioni bytecode Java?
- 19. Completamento quando il programma è sotto-comandi
- 20. fa minHeight fare qualcosa?
- 21. È possibile eseguire il debug con Python debugger quando si utilizza py.test in qualche modo?
- 22. Il thread non si interrompe
- 23. Il debugger non si interrompe/si interrompe per le eccezioni in modalità asincrona
- 24. Come uscire da gdb se il programma ha successo, si interrompe se il programma va in crash?
- 25. Cosa fare quando si rileva e (rror) in Java
- 26. Il POI Java Excel si interrompe dopo l'esecuzione multipla al quarzo
- 27. Interrompe l'esecuzione di un GCD, quando il ViewController è spuntato
- 28. Come posso fare in modo che il mio programma si blocchi correttamente quando si utilizza il modulo cmd python?
- 29. Fino a quando l'input dell'utente equivale a qualcosa da fare
- 30. Quando è appropriato fare?
Penso che sarà eseguito su CTRL + C e 'SIGTERM' ma penso che ci sono altri modi per uccidere il programma in cui questo voleva correre –
sistemi embedded che ho visto che potrebbe registra effettivamente un evento di perdita di potenza. Serve un condensatore piuttosto grande e una routine di servizio di interruzione piuttosto piccola, ma può essere fatto. –
Un'altra alternativa è registrare gli arresti riusciti e verificare all'avvio che l'ultima esecuzione del programma sia stata arrestata correttamente. –