Answers:
如果程序执行的好坏,则exit参数应为合格。这是较早的编程语言的一种遗传,在这种情况下,了解是否出了什么问题以及出了什么问题是很有用的。
退出代码为
0
执行良好时;1
,-1
,whatever != 0
发生了一些错误时,可以为不同类型的错误使用不同的值。如果我是正确的,退出代码过去只是正数(在UNIX中是我的意思),并根据范围:
1-127
是用户定义的代码(因此通过调用生成exit(n)
)128-255
是由于不同的unix信号(例如SIGSEGV或SIGTERM)而由终止生成的代码但是我认为您在使用Java进行编码时不应该在意,这只是一些信息。如果您计划使程序与标准工具进行交互,这将很有用。
java MyApp && echo success
如果MyApp的退出代码为0,即如果它调用exit(0)
或只是简单地到达main方法的末尾而没有错误,则将打印“成功” 。
Zero
=>一切都好
Positive
=>我预期可能会出错的地方出错了(错误的命令行,找不到文件,无法连接到服务器)
Negative
=>我根本没想到的事情出了问题(系统错误-意外的异常-外部强制终止,例如kill -9
)
(大于128的值实际上是负数,如果您将其视为8位带符号二进制或二进制补码)
这里有很多好的标准退出代码
kill -15
)常常导致退出代码128+signal
,但(除9)可被处理,并且返回一个不同的退出代码。在-
在kill -15
是标记作为一个信号,而不是一个PID的数量,它不会使信号负。
System.exit(-1)
,然后在外壳程序中echo $?
得到“ 255”。这就是为什么我说负数是系统错误,而不是因为kill参数中的“-”。您是否认真考虑过我的想法?但是,感谢您解释Bash构造这些代码的机制。
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
更高级别,则用于失败执行。
EXIT_*
在Java中不存在。
非零退出状态代码通常表示异常终止。如果是n != 0
,则取决于程序员将含义应用于各个n。
从https://docs.oracle.com/javase/7/docs/api/java/lang/System.html。
exit(0)
通常用于指示成功终止。exit(1)
或exit(-1)
任何其他非零值通常表示终止失败。
这就是答案。
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
一个好的陷阱是,任何> 255的错误代码都将转换为错误代码%256。如果他们使用的自定义错误代码> 255并且在应用程序逻辑中期望确切的错误代码,则应该特别小心。 http://www.tldp.org/LDP/abs/html/exitcodes.html
按照惯例,System.exit(0),非零状态代码表示异常终止。
System.exit(1) -表示由于某些错误而无法成功终止
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); 当我按案例5时,它会正确退出,但是当我使用System.exit(1)时;并按情况5它错误退出,并且当我尝试情况15它正确退出时我知道,每当我们将任何int放入参数时,它都会指定从该位置获取字符,即如果我把(4)表示从该字符串中取第5个字符,如果(3)则表示从该输入字符串中取第4个字符