¿Cuál es la mejor manera de salir de una aplicación Java con código?
¿Cuál es la mejor manera de salir de una aplicación Java con código?
Respuestas:
Puedes usar System.exit()para este propósito.
De acuerdo con la documentación de Java 8 de Oracle:
public static void exit(int status)Termina la máquina virtual Java actualmente en ejecución. El argumento sirve como un código de estado; por convención, un código de estado distinto de cero indica una terminación anormal .
Este método llama al método de salida en clase Runtime. Este método nunca vuelve normalmente.
La llamada
System.exit(n)es efectivamente equivalente a la llamada:
Runtime.getRuntime().exit(n)
System.exit(0);
El "0" le dice a quien llamó a su programa que todo salió bien. Sin embargo, si está saliendo debido a un error, debería hacerlo System.exit(1);, o con otro número distinto de cero correspondiente al error específico.
Además, como otros han mencionado, ¡limpie primero! Eso implica cerrar archivos y otros recursos abiertos.
System.exit(1)(o cualquier otro número) es si desea indicar que se cerró debido a un error. System.exit(0)indica que el programa se cerró normalmente. También puede cambiar 1 a cualquier número que desee, luego, cuando esté ejecutando su aplicación desde un script, puede determinar si hubo un error.
System.exit() Por lo general, no es la mejor manera, pero depende de su aplicación.
La forma habitual de finalizar una aplicación es salir del main()método. Esto no funciona cuando hay otros subprocesos que no son deamon en ejecución, como es habitual en aplicaciones con una interfaz gráfica de usuario (AWT, Swing, etc.). Para estas aplicaciones, puede encontrar una manera de finalizar el bucle de eventos de la GUI (no sabe si eso es posible con AWT o Swing), o invocar System.exit().
Estoy de acuerdo con Jon, haga que su aplicación reaccione a algo y llame a System.exit ().
Estar seguro de que:
La respuesta es System.exit (), pero no es algo bueno, ya que esto anula el programa. Cualquier limpieza, destrucción que pretendes hacer no sucederá.
Hay dos respuestas simples a la pregunta.
Esta es la "forma profesional":
//This just terminates the program.
System.exit(0);
Esta es una forma más torpe:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;también es bueno, el retorno evita que se ejecute cualquier código de ruta antes de que el sistema pueda salir, de lo contrario necesitaría un indicador (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: "Este método debe usarse con extrema precaución. A diferencia del exitmétodo, este método no hace que se inicien los ganchos de apagado y no ejecuta finalizadores no invocados si se ha habilitado la finalización al salir. Si la secuencia de apagado se ha activado. ya iniciado, entonces este método no espera a que los ganchos de cierre o finalizadores en ejecución finalicen su trabajo ". En resumen, no debería necesitar usar halt, debería preferir exit.
System.exit()Hará lo que quieras. Pero en la mayoría de las situaciones, es probable que desee salir de un hilo y dejar vivo el hilo principal. Al hacerlo, puede finalizar una tarea, pero también mantener la capacidad de iniciar otra tarea sin reiniciar la aplicación.
System.exit (ABORT); Salir es el proceso de inmediato.
Esto debería hacerlo de la manera correcta:
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();
}
}