系统差异。 在Java中退出(0),System.exit(-1),System.exit(1)
我想知道以下在Java中的区别
System.exit(0); System.exit(-1); System.exit(1);
我什么时候需要适当地使用上面的代码?
如果程序的执行顺利,则退出的参数应该是合格的。 这是从旧的编程语言的遗传,这是有用的知道是否出了问题,出了什么问题。
退出代码是
- 执行顺利时执行
0
; -
1
,-1
,whatever != 0
当发生一些错误时,可以针对不同types的错误使用不同的值。
如果我是正确的退出代码只是正数(我的意思是在UNIX中),并根据范围:
-
1-127
是用户定义的代码(通过调用exit(n)
生成) - 由于SIGSEGV或SIGTERM等不同的unix信号,
128-255
是终止产生的代码
但是我不认为你应该在Java上编码,这只是一些信息。 如果您计划使您的程序与标准工具交互,这将非常有用。
Zero
=>一切都好
Positive
=>我想要的东西可能会出错出错了(糟糕的命令行,无法find文件,无法连接到服务器)
Negative
=>我没有想到的东西都出错了(系统错误 – 意外的exception – 外部强制终止,例如kill -9
)
(大于128的值实际上是负值,如果将它们视为8位有符号二进制或二进制补码)
这里有大量标准的退出代码
System.exit(system call)
通过启动其closures序列来终止当前运行的Java虚拟机。 参数用作状态码 。
按照惯例,非零状态码表示exception终止。
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
表示执行失败。
非零退出状态码通常表示exception终止。 如果n != 0
,那么程序员就可以将这个意义应用于各种n。
从https://docs.oracle.com/javase/7/docs/api/java/lang/System.html 。
这是答案。
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
正如别人回答0
意味着成功,否则。
如果使用bat文件(窗口) 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 --
一个好的陷阱是任何错误代码> 255将被转换为错误代码%256.如果他们正在使用自定义错误代码> 255,期待在应用程序逻辑中的确切的错误代码,应该特别小心。 http://www.tldp.org/LDP/abs/html/exitcodes.html
System.exit(0)按照约定,非零状态码表示exception终止。
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)它的意思是从该string取第5个字符,如果其(3)则表示从该string取第4个字符