Diferença no sistema. exit (0), System.exit (-1), System.exit (1) em Java

Eu gostaria de saber a diferença entre o seguinte em Java

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

Quando devo usar o código acima adequadamente?

    O parâmetro de saída deve se qualificar se a execução do programa foi boa ou ruim. É uma espécie de hereditariedade de linguagens de programação mais antigas, onde é útil saber se algo deu errado e o que deu errado.

    O código de saída é

    • 0 quando a execução correu bem;
    • 1 , -1 , whatever != 0 quando algum erro ocorreu, você pode usar valores diferentes para diferentes tipos de erros.

    Se estou correto, os códigos de saída costumavam ser apenas números positivos (quero dizer, no UNIX) e de acordo com o intervalo:

    • 1-127 são códigos definidos pelo usuário (gerados por chamada de exit(n) )
    • 128-255 são códigos gerados por terminação devido a diferentes sinais unix como SIGSEGV ou SIGTERM

    Mas eu não acho que você deva se importar ao codificar em Java, é apenas um pouco de informação. É útil se você planeja fazer com que seus programas interajam com ferramentas padrão.

    Zero => Tudo bem

    Positive => Algo que eu esperava poderia dar errado errou (linha de comando ruim, não consegue encontrar o arquivo, não conseguiu se conectar ao servidor)

    Negative => Algo que eu não esperava de todo deu errado (erro de sistema – exceção imprevista – terminação forçada externamente, por exemplo, kill -9 )

    (valores acima de 128 são negativos, se você os considerar como binário de 8 bits ou dois)

    Há uma carga de bons códigos de saída padrão aqui

    System.exit(system call) encerra a máquina virtual Java em execução iniciando sua sequência de encerramento. O argumento serve como um código de status .

    Por convenção, um código de status diferente de zero indica uma finalização anormal.

      System.exit(0) or EXIT_SUCCESS; ---> Success System.exit(1) or EXIT_FAILURE; ---> Exception System.exit(-1) or EXIT_ERROR; ---> Error 

    Leia mais em Java

    Nos sistemas Unix e Linux, 0 para execuções bem-sucedidas e 1 ou superior para execuções com falha.

    Um código de status de saída diferente de zero geralmente indica uma finalização anormal. se n != 0 , cabe ao programador aplicar um significado aos vários n’s.

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

    exit(0) geralmente usado para indicar o término bem-sucedido. exit(1) ou exit(-1) ou qualquer outro valor diferente de zero indica término malsucedido em geral.

    Aqui está a resposta.

     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 os outros respondem 0 significando sucesso, caso contrário.

    Se você estiver usando o arquivo bat (janela), System.exit(x) será afetado.

    Código java (myapp):

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

    }

    arquivo de morcego:

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

    Uma boa pegadinha é qualquer código de erro> 255 será convertido em código de erro% 256. Deve-se ter um cuidado específico sobre isso se eles estiverem usando um código de erro personalizado> 255 e esperando o código de erro exato na lógica do aplicativo. http://www.tldp.org/LDP/abs/html/exitcodes.html

    a diferença dos números colocados em system.exit () é explicada em outras respostas. mas a DIFERENÇA REAL é que System.exit () é um código que é retornado ao processo de chamada. Se o programa está sendo invocado pelo sistema operacional, o código de retorno informará ao sistema operacional que se system.exit () retornou 0 do que estava tudo ok, mas se algo não deu errado, pode haver alguns manipuladores para ele no processo pai

    System.exit (0) por convenção, um código de status diferente de zero indica uma finalização anormal.

    System.exit (1) -Isso significa rescisão mal sucedida devido a algum erro

     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); } 

    }

    No código acima quando seu System.exit (0); e quando eu pressiono o caso 5 sai corretamente, mas quando eu uso System.exit (1); e pressione maiúsculas 5 ele sai com erro e novamente quando tento com o caso 15 ele sai apropriadamente por isso eu fiquei sabendo que, sempre que colocarmos algum argumento int dentro ele especifica isso, ele pega o caractere dessa posição ie se eu colocar (4) que significa pegar o 5º caractere da string se for (3) então significa tirar 4º caractere da string inserida