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

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

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


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

退出代码为

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

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

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

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


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

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


零=>一切正常

我预期的一些事情可能会出错出错(坏的命令行,找不到文件,无法连接到服务器)

我没有预料到的事情发生了错误(系统错误-意外异常-外部强制终止,例如kill -9)

(大于128的值实际上是负数,如果你认为它们是8位有符号二进制或双补码)

这里有很多很好的标准退出码


系统。exit(系统调用)通过启动Java虚拟机的关闭序列来终止当前运行的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或更高表示执行失败。


这就是答案。

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

system . exit (0) 按照惯例,状态码为0表示终止成功。

system . exit (1) -表示由于某些错误导致终止失败


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


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);然后按case 5,它会错误退出当我尝试case 15时,它会正确退出我知道,当我们在参数中放入任何int时,它会指定,它会从那个位置取字符例如,如果我输入(4),它意味着从那个字符串中取第5个字符如果我输入(3),它意味着从那个输入字符串中取第4个字符


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


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


请看下面的代码

public static void main(String[] args) {
    **String s=null;**
    try {
        System.out.println("Exit");
        System.exit(1);
        **s.length();**
    }catch(Exception e) {
        System.out.println("Exception");
    }finally {
        System.out.println("finally");
    }}

在这里 exit(0):通常用于表示成功终止。 exit(1)或exit(-1)或任何其他非零值-通常表示终止不成功。 不管你传递什么作为参数,控制流总是出来,然后不打印任何东西,要么是catch block as .length will throw exception在这里,要么是finally