Разница в системе. 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-й символ из этой введенной строки