Necesito registrar un registro si el programa salió abruptamente o con alguna excepción. Por ejemplo, cuando alguien presiona Ctrl+C
mientras ejecuta el programa, necesito iniciar sesión para que salga abruptamente. ¿Cómo puedo hacer esto?¿Es posible hacer algo cuando el programa Java se cierra abruptamente?
6
A
Respuesta
9
Puede intentar y utilizar un shutdown hook para esto. De la documentación, el gancho se ejecutará en las siguientes circunstancias:
- el programa sale normalmente
- El VM se termina
Esto cubre su situación ^C
, pero cubrirá dudosamente situaciones como la la máquina está desconectada (salvo algún tipo de hardware redundante en la máquina).
Here son algunas notas sobre el diseño.
crudo ejemplo:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("System was shutdown");
}
});
Cuestiones relacionadas
- 1. C: Hacer algo cuando el programa sale
- 2. programa externo de parada cuando el programa Java se detuvo
- 3. ¿Se cierra automáticamente una SqlConnection cuando se cierra una aplicación?
- 4. ¿Qué es el cortocircuito y cómo se usa cuando se programa en Java?
- 5. ¿Cómo me deshago de los procesos secundarios de Java cuando mi aplicación Java se cierra/falla?
- 6. ¿Es posible en java hacer algo parecido a Comparator pero para implementar personalizados equals() y hashCode()
- 7. Android: el servicio se detiene cuando se cierra Activity
- 8. El programa finaliza abruptamente incluso en el depurador: ¿cómo sucedió eso?
- 9. ¿es posible abrir una ventana emergente con javascript y luego detectar cuando el usuario la cierra?
- 10. Programa Java Swing Run cuando se inicia Windows
- 11. ¿El programa "sí" se usa para algo significativo?
- 12. ¿Es posible hacer obligatorio el valor de una anotación Java?
- 13. Terminar el proceso ejecutado con `exec` cuando el programa finaliza
- 14. Cierre de formulario primario cuando el formulario hijo se cierra
- 15. ¿Es posible obtener advertencias de javadoc cuando algo se perdió en javadoc-comments?
- 16. Hacer un Python/GTK CheckMenuItem, cuando se hace clic en él, no cierra el menú
- 17. Hacer algo antes de la salida del programa
- 18. ¿Qué sucede si no elimino un Objeto de búfer de vértice cuando mi programa se cierra?
- 19. ¿Qué hacer cuando se usa Contract.Assert (true) y el método debe devolver algo?
- 20. slideDown salta abruptamente al final
- 21. Cómo recibir una notificación cuando NSWindow se cierra
- 22. CLR se cierra cuando un hilo no se maneja. Excepción
- 23. Android ventana emergente se cierra al hacer clic fuera de
- 24. Java Antivirus ... ¿es posible? ¿Cómo?
- 25. ¿Es posible forzar el borrado de caché cuando se actualiza una aplicación java web start?
- 26. ¿Es posible hacer una manipulación de bytecode cuando se usa OSGi?
- 27. ¿Cómo ser notificado cuando se cierra un SocketChannel?
- 28. ¿Por qué se destruye el servicio remoto cuando se cierra la actividad principal?
- 29. ¿Es posible estar informado cuando el contenido del portapapeles cambia fuera de java?
- 30. ¿Es posible probar/capturar todo el programa C#?
creo que va a funcionar con CTRL + C y 'SIGTERM' pero creo que hay otras maneras de matar el programa cuando ello no funcionarán –
sistemas embebidos que he visto que podría realmente registrar un evento de pérdida de potencia. Necesita un condensador bastante grande y una rutina de servicio de interrupción bastante pequeña, pero se puede hacer. –
Otra alternativa es registrar cierres exitosos y verificar al inicio que la última ejecución del programa se cerró con éxito. –