java - que - system.exit netbeans
Diferencia en el sistema. exit(0), System.exit(-1), System.exit(1) en Java (11)
Aquí está la respuesta.
System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message
Me gustaría saber la diferencia entre lo siguiente en Java
System.exit(0);
System.exit(-1);
System.exit(1);
¿Cuándo tengo que usar el código anterior adecuadamente?
Como otros responden 0
significa éxito, de lo contrario.
Si usa el archivo bat (ventana), se System.exit(x)
.
Código java (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
archivo de bat:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
El parámetro de salida debe calificar si la ejecución del programa fue buena o mala. Es una especie de herencia de los 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 usar diferentes valores para diferentes tipos de errores.
Si soy correcto, los códigos de salida solían ser solo números positivos (me refiero a UNIX) y de acuerdo con el rango:
-
1-127
son códigos definidos por el usuario (generados así al llamar aexit(n)
) -
128-255
son códigos generados por terminación debido a diferentes señales de Unix como SIGSEGV o SIGTERM
Pero no creo que debas preocuparte mientras codificas en Java, es solo un poco de información. Es útil si planeas hacer que tus programas interactúen con herramientas estándar.
Un buen problema 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 utilizan 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
Un 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 distintas n.
Desde https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
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 está invocando el programa, el código de retorno le dirá al sistema operativo que si system.exit () devolvió 0 que todo estaba bien, pero si no, algo salió mal, podría haber algunos controladores para eso en el proceso principal
System.exit(system call)
finaliza la máquina virtual Java actualmente en ejecución al iniciar 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.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Lea más en Java
En sistemas Unix y Linux, 0
para ejecuciones exitosas y 1
o más para ejecuciones fallidas.
Zero
=> todo bien
Positive
=> Algo que esperaba que podría salir mal, salió mal (la línea de comandos no funciona, 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 ejemplo, kill -9
)
(los valores superiores a 128 son realmente negativos, si los considera como binarios con signo de 8 bits, o dos complementos)
Hay una carga de buenos códigos de salida estándar aquí
exit(0)
generalmente se usa para indicar una terminación exitosa. exit(1)
o exit(-1)
o cualquier otro valor distinto de cero indica una terminación fallida en general.
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 ha realizado correctamente debido a algún error.
class calc{
public static void main(String args[])
{
int a, b, c;
char ch;
do{
Scanner s=new Scanner(System.in);
System.out.print("1. Addition/n");
System.out.print("2. Substraction/n");
System.out.print("3. Multiplication/n");
System.out.print("4. Division/n");
System.out.print("5. Exit/n/n");
System.out.print("Enter your choice : ");
ch=s.next().charAt(0);
switch (ch)
{
case ''1'' :
Addition chose1=new Addition();
chose1.add();
break;
case ''2'' :
Substraction chose2=new Substraction();
chose2.sub();
break;
case ''3'' :
Multiplication chose3= new Multiplication();
chose3.multi();
break;
case ''4'' :
Division chose4=new Division();
chose4.divi();
break;
case ''5'' :
System.exit(0);
break;
default :
System.out.print("wrong choice!!!");
break;
}
System.out.print("/n--------------------------/n");
}while(ch !=5);
}
}
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 presiona mayúsculas y minúsculas, sale con error y, de nuevo, cuando intento con la caja 15 sale apropiadamente por esto. Llegué a saber que, cuando ponemos cualquier argumento interno, especifica que, toma el carácter de esa posición, es decir, si pongo (4) que significa tomar el quinto carácter de esa cadena si es su (3) entonces significa tomar el cuarto carácter de esa cadena ingresada