Me gustaría saber la diferencia entre lo siguiente en Java
System.exit(0);
System.exit(-1);
System.exit(1);
¿Cuándo debo usar el código anterior de manera adecuada?
java
system.exit
giri
fuente
fuente
Respuestas:
El parámetro de salida debe calificar si la ejecución del programa fue buena o mala. Es una especie de herencia de lenguajes de programación más antiguos donde es útil saber si algo salió mal y qué salió mal.
El código de salida es
0
cuando la ejecución fue bien;1
,-1
,whatever != 0
Cuando se produjo algún error, puede utilizar valores diferentes para diferentes tipos de errores.Si estoy en lo correcto, los códigos de salida solían ser solo números positivos (quiero decir en UNIX) y según el rango:
1-127
son códigos definidos por el usuario (generados al llamarexit(n)
)128-255
son códigos generados por terminación debido a diferentes señales de unix como SIGSEGV o SIGTERMPero no creo que deba preocuparse mientras codifica en Java, es solo un poco de información. Es útil si planea hacer que sus programas interactúen con herramientas estándar.
fuente
java MyApp && echo success
imprimirá "éxito" si MyApp tiene un código de salida de 0, es decir, si llamaexit(0)
o simplemente llega al final del método principal sin un error.Zero
=> Todo bienPositive
=> Algo que esperaba que pudiera salir mal salió mal (línea de comando incorrecta, no se puede encontrar el archivo, no se pudo conectar al servidor)Negative
=> Algo que no esperaba en absoluto salió mal (error del sistema - excepción no anticipada - terminación forzada externamente, por ejemplokill -9
)(los valores superiores a 128 son en realidad negativos, si los considera como binarios con signo de 8 bits o dos complementarios)
Aquí hay un montón de buenos códigos de salida estándar
fuente
kill -15
) a menudo dan como resultado un código de salida128+signal
, pero (aparte de 9) se pueden manejar y devolver un código de salida diferente. El-
dekill -15
es el número de marcas como una señal y no un pid, no hacen que la negativa de la señal.System.exit(-1)
y luego en tu caparazónecho $?
obtienes '255'. Es por eso que dije que los números negativos son errores del sistema, no por el '-' en el parámetro kill. ¿En serio pensaste que eso era lo que yo pensaba? Pero gracias por explicar el mecanismo por el cual Bash construye estos códigos.System.exit(system call)
finaliza la máquina virtual Java actualmente en ejecución iniciando su secuencia de apagado. 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.
Leer más en Java
En sistemas Unix y Linux,
0
para ejecuciones exitosas y1
superiores para ejecuciones fallidas.fuente
EXIT_*
no existe en JavaUn código de estado de salida distinto de cero, generalmente indica una terminación anormal. si
n != 0
, depende del programador aplicar un significado a las diversas n.Desde https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
fuente
exit(0)
generalmente se usa para indicar la terminación exitosa.exit(1)
oexit(-1)
cualquier otro valor distinto de cero indica una terminación fallida en general.fuente
Aquí está la respuesta.
fuente
Un buen truco es que cualquier código de error> 255 se convertirá en el código de error% 256. Se debe tener especial cuidado con esto si están usando un código de error personalizado> 255 y esperan el código de error exacto en la lógica de la aplicación. http://www.tldp.org/LDP/abs/html/exitcodes.html
fuente
La diferencia de los números puestos en system.exit () se explica en otras respuestas. pero la DIFERENCIA REAL es que System.exit () es un código que se devuelve al proceso de invocación. Si el sistema operativo invoca el programa, el código de retorno le indicará al sistema operativo que si system.exit () devolvió 0, todo estaba bien, pero si algo salió mal, entonces podría haber algunos controladores para eso en el proceso padre
fuente
Como otros responden
0
significando éxito, de lo contrario.Si utiliza el archivo bat (ventana)
System.exit(x)
tendrá efecto.Código java (myapp):
}
archivo bat:
fuente
System.exit (0) por convención, un código de estado distinto de cero indica una terminación anormal.
System.exit (1): significa que la terminación no se realizó correctamente debido a algún error
fuente
}
En el código anterior cuando su System.exit (0); y cuando presiono el caso 5 sale correctamente pero cuando uso System.exit (1); y presiono el caso 5 sale con error y nuevamente cuando intento con el caso 15 sale correctamente por esto llegué a saber que, cada vez que ponemos un argumento int dentro, especifica que, toma el carácter de esa posición, es decir, si pongo (4) que significa tomar el 5to carácter de esa cadena si es (3) entonces significa tomar el 4to carácter de esa cadena ingresada
fuente