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

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

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


当前回答

Exit(0)通常用于表示成功终止。Exit(1)或Exit(-1)或任何其他非零值表示终止不成功。

其他回答

在system.exit()中放入的数字的差异在其他答案中解释了。但真正的区别在于System.exit()是返回给调用进程的代码。如果程序被操作系统调用,那么返回代码将告诉操作系统,如果system.exit()返回0,那么一切正常,但如果没有出错,那么在父进程中可能会有一些处理程序

任何错误代码> 255都将被转换为错误代码% 256。 如果使用自定义错误代码> 255并希望在应用程序逻辑中使用准确的错误代码,则应该特别注意这一点。 http://www.tldp.org/LDP/abs/html/exitcodes.html

正如别人回答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 --

非零退出状态码,通常表示异常终止。如果n != 0,则由程序员对各种n应用意义。

从https://docs.oracle.com/javase/7/docs/api/java/lang/System.html。

exit参数应该符合程序执行的好坏。这是一种来自较老的编程语言的遗传,在这些语言中,知道是否出现了问题以及出现了什么问题非常有用。

退出代码为

执行正常时为0; 当发生错误时,你可以对不同类型的错误使用不同的值。

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

1-127是用户定义的代码(因此通过调用exit(n)生成) 128-255是由于不同的unix信号(如SIGSEGV或SIGTERM)而终止产生的代码

但我不认为你在Java上编码时应该在意,这只是一点信息。如果您计划让您的程序与标准工具交互,那么它很有用。