系统差异。 在Java中退出(0),System.exit(-1),System.exit(1)

我想知道以下在Java中的区别

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

我什么时候需要适当地使用上面的代码?

如果程序的执行顺利,则退出的参数应该是合格的。 这是从旧的编程语言的遗传,这是有用的知道是否出了问题,出了什么问题。

退出代码是

  • 执行顺利时执行0 ;
  • 1-1whatever != 0当发生一些错误时,可以针对不同types的错误使用不同的值。

如果我是正确的退出代码只是正数(我的意思是在UNIX中),并根据范围:

  • 1-127是用户定义的代码(通过调用exit(n)生成)
  • 由于SIGSEGVSIGTERM等不同的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个字符