Diferencia en el sistema exit (0), System.exit (-1), System.exit (1) en Java

Me gustaría saber la diferencia entre los siguientes en Java

System.exit(0); System.exit(-1); System.exit(1); 

¿Cuándo debo usar el código anterior de manera apropiada?

    El parámetro de salida debería calificar si la ejecución del progtwig fue buena o mala. Es una especie de herencia de los lenguajes de progtwigción 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 los códigos de salida son correctos solía ser solo números positivos (es decir, en UNIX) y de acuerdo con el rango:

    • 1-127 son códigos definidos por el usuario (generados al llamar a exit(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 planea hacer que sus progtwigs interactúen con herramientas estándar.

    Zero => Todo bien

    Positive => Algo que esperaba que podría salir mal salió mal (mala línea de comandos, no puedo encontrar el archivo, no pude conectarme al servidor)

    Negative => Algo que no esperaba en absoluto salió mal (error del sistema – excepción imprevista – terminación forzada externamente, por ejemplo, kill -9 )

    (los valores mayores que 128 son realmente negativos, si los considera como binario con signo de 8 bits, o como complemento de dos)

    Hay una gran cantidad de buenos códigos de salida estándar aquí

    System.exit(system call) finaliza la máquina virtual Java 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.

      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.

    Un código de estado de salida distinto de cero, generalmente indica una terminación anormal. si n != 0 , depende del progtwigdor aplicar un significado a las diversas n.

    Desde https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .

    exit(0) generalmente se usa para indicar la finalización exitosa. exit(1) o la exit(-1) o cualquier otro valor distinto de cero indica una terminación fallida en general.

    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 

    Como otros responden 0 significa éxito, de lo contrario.

    Si usa el archivo bat (ventana) System.exit(x) tendrá efecto.

    Código java (myapp):

     if (error < 2){ help(); System.exit(-1); } else{ doSomthing(); System.exit(0); } 

    }

    bat archivo:

     java -jar myapp.jar if %errorlevel% neq 0 exit /b %errorlevel% rem -- next command if myapp is success -- 

    Un buen resultado es que cualquier código de error> 255 se convertirá en el código de error% 256. Se debe tener especial cuidado si se usa un código de error personalizado> 255 y se espera el código de error exacto en la lógica de la aplicación. http://www.tldp.org/LDP/abs/html/exitcodes.html

    la diferencia de los números puestos en system.exit () se explica en otras respuestas. pero la REAL DIFERENCIA es que System.exit () es un código que se devuelve al proceso de invocación. Si el sistema operativo está invocando el progtwig, el código de retorno le indicará al sistema operativo que si system.exit () devolvió 0 que todo estaba bien, pero que si algo no salió bien, podría haber algunos controladores para eso en el proceso principal.

    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 fue correcta 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 caso 5 sale con error y nuevamente cuando trato con el caso 15 sale correctamente por esto llegué a saber que, cuando ponemos cualquier argumento dentro int especifica que, toma el personaje de esa posición, es decir, si puse (4) que significa tomar el quinto carácter de esa cuerda si es (3) entonces significa tomar el 4to personaje de esa cadena invocada