Разница в системе. exit (0), System.exit(-1), System.exit(1) в Java

Я хотел бы узнать разницу между приведенными ниже в Java

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

Когда мне нужно соответствующим образом использовать вышеуказанный код?

Ответ 1

Параметр выхода должен быть квалифицирован, если выполнение программы было хорошим или плохим. Это своего рода наследственность от старых языков программирования, где полезно знать, что-то пошло не так, и что пошло не так.

Код выхода

  • 0, когда выполнение прошло нормально;
  • 1, -1, whatever != 0, когда произошла некоторая ошибка, вы можете использовать разные значения для различных типов ошибок.

Если я правильный код выхода, который был просто положительным числом (я имею в виду в UNIX) и в соответствии с диапазоном:

  • 1-127 - это пользовательские коды (сгенерированные при вызове exit(n))
  • 128-255 являются кодами, генерируемыми завершением из-за разных сигналов unix, таких как SIGSEGV или SIGTERM

Но я не думаю, что вам нужно заботиться о кодировании на Java, это всего лишь немного информации. Это полезно, если вы планируете взаимодействовать со стандартными инструментами.

Ответ 2

Zero = > Все в порядке

Positive = > То, что я ожидал, может пойти не так, как ошибочно, ошибочно (плохая командная строка, не удается найти файл, не удалось подключиться к серверу)

Negative = > Что-то, чего я не ожидал, пошло не так (системная ошибка - непредвиденное исключение - принудительное завершение извне, например kill -9)

(значения, превышающие 128, фактически отрицательны, если вы считаете их 8-разрядными бинарными бинарными или двумя дополнениями)

Здесь загружается хорошее стандартные коды выхода

Ответ 3

System.exit(system call) завершает работу текущей виртуальной машины Java, инициируя ее последовательность выключения. Аргумент служит в качестве кода состояния.

По соглашению, отличный от нуля код состояния указывает на ненормальное завершение.

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

Подробнее в Java

В системах Unix и Linux 0 для успешных исполнений и 1 или выше для неудачных исполнений.

Ответ 4

Не нулевой код статуса выхода, как правило, указывает на ненормальное завершение. если n != 0, то до программиста применить значение к различным n.

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

Ответ 5

Вот ответ.

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

Ответ 6

Как говорят другие, 0 означает успех, в противном случае.

Если вы используете файл bat (window) System.exit(x), эффект будет.

Код java (myapp):

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

}

bat файл:

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

Ответ 7

Хороший gotcha - любой код ошибки > 255 будет преобразован в код ошибки% 256. Нужно быть особенно осторожным, если они используют специальный код ошибки > 255 и ожидают точный код ошибки в логике приложения. http://www.tldp.org/LDP/abs/html/exitcodes.html

Ответ 8

System.exit(0) по соглашению, ненулевой код состояния указывает на ненормальное завершение.

System.exit(1) -Это означает, что завершение неудачно из-за некоторой ошибки

Ответ 9

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

}

В приведенном выше коде, когда его System.exit(0); и когда я нажимаю case 5, он выходит из строя, но когда я использую System.exit(1); и нажмите case 5, он выходит с ошибкой, и снова, когда я пытаюсь с случаем 15, он выходит из него должным образом. Я узнал, что когда мы помещаем любой внутренний аргумент, он указывает, что он принимает символ из этой позиции, т.е. если я ставлю (4), что это означает, что он берет 5-й символ из этой строки, если его (3), то это означает, что 4-й символ из этой введенной строки