制度上的差异。Java中的exit(0)、System.exit(-1)、System.exit(1)

制度上的差异。Java中的exit(0)、System.exit(-1)、System.exit(1),java,system.exit,Java,System.exit,我想知道在Java中以下两者之间的区别 System.exit(0); System.exit(-1); System.exit(1); 什么时候我必须适当地使用上面的代码?如果程序执行得好或坏,exit参数应该是合格的。这是一种来自旧编程语言的遗传,在旧编程语言中,知道是否出了问题以及什么出了问题是很有用的 退出代码是 0执行正常时 1,-1,随便什么!=0发生错误时,可以对不同类型的错误使用不同的值 如果我是正确的,则退出代码过去仅为正数(我的意思是在UNIX中),并根据范围: 1-

我想知道在Java中以下两者之间的区别

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

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

如果程序执行得好或坏,exit参数应该是合格的。这是一种来自旧编程语言的遗传,在旧编程语言中,知道是否出了问题以及什么出了问题是很有用的

退出代码是

  • 0
    执行正常时
  • 1
    -1
    随便什么!=0
    发生错误时,可以对不同类型的错误使用不同的值
如果我是正确的,则退出代码过去仅为正数(我的意思是在UNIX中),并根据范围:

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

但我认为在Java上编写代码时您不应该在意,这只是一点信息。如果您计划让程序与标准工具交互,这将非常有用。

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


从。

=>一切正常

Positive
=>我认为可能会出错的东西出错了(命令行错误,找不到文件,无法连接到服务器)

否定
=>我完全没有预料到的错误(系统错误-意外异常-外部强制终止,例如
终止-9

(如果将大于128的值视为8位有符号二进制或两位补码,则实际上为负数)

有一个良好的

系统。退出(系统调用)
通过启动其关闭序列来终止当前运行的Java虚拟机。该参数用作状态代码

按照惯例,非零状态代码表示异常终止

  System.exit(0) or EXIT_SUCCESS;  ---> Success
  System.exit(1) or EXIT_FAILURE;  ---> Exception
  System.exit(-1) or EXIT_ERROR;   ---> Error
阅读更多

在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
系统退出(0) 按照惯例,零状态代码表示成功终止

  System.exit(0) or EXIT_SUCCESS;  ---> Success
  System.exit(1) or EXIT_FAILURE;  ---> Exception
  System.exit(-1) or EXIT_ERROR;   ---> Error
系统退出(1)
-这意味着由于某些错误导致终止失败

,因为其他人回答
0
表示成功,否则

如果您使用bat文件(窗口)
System.exit(x)
将生效

代码java(myapp):


一个好的解决方法是,任何大于255的错误代码都将转换为错误代码%256。 如果用户使用的自定义错误代码大于255,并且在应用程序逻辑中需要精确的错误代码,则应特别小心。

}


在上述代码中当其系统退出时(0);当我按下case 5时,它正确退出,但当我使用System.exit(1)时;按下case 5,它会以错误的方式退出,当我尝试使用case 15时,它会以错误的方式退出,我知道,当我们在参数中放入int时,它会指定从该位置取字符,也就是说,如果我放入(4),它意味着从该字符串中取第5个字符,如果它是(3)然后它意味着从输入的字符串中提取第四个字符

退出(0)
通常用于指示成功终止<代码>退出(1)或
退出(-1)
或任何其他非零值通常表示终止不成功。

系统中输入的数字的差异。退出()在其他答案中解释。但真正的区别在于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");
    }}
这里 退出(0):通常用于指示成功终止。 退出(1)或退出(-1)或任何其他非零值–通常表示终止失败。
无论您将什么作为参数传递,控制流总是出现,并且接下来不会打印任何内容,或者它可能是catch block ass。length将在此处引发异常,或者最后抛出异常。请注意,0的退出代码在shell中计为true,而任何其他代码计为false。因此,
java MyApp&&echo success
将在MyApp的退出代码为0时打印“success”,即如果调用
exit(0)
或只是到达主方法的末尾而没有错误。如果您的应用程序可以在脚本中使用,请始终注意退出代码。一个工具在你的脚本中间默默地失败(或者打印一些堆栈跟踪并退出0)是非常恼人的。需要注意的是:当返回1时,在无符号上下文中返回最大可能的正数(在两个补码表示中- 1总是设置所有比特,而不管数字中的字节数)。因此,当您返回非特定错误并且不希望它与已经定义和记录的可能错误代码冲突时,通常会返回-1。e、 g.错误代码1可能记录为写入错误;错误代码2可能是read error,等等。这是Unix的*exit(2)`实际上的'遗传'。“我预期会出错的东西出错了”听起来像是“一切正常”。“我作为开发人员可以合理预期的事情是”用户错误与系统错误;上面的海报实际上涵盖了这一点:值128-255是-ve wrt 8位有符号二进制。@tobe它实际上更像是“我预期可能出错的东西实际上出错了”;)Bash将退出代码视为8位无符号代码,并将修改为256,因此-1变为255,256变为0。信号(
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); 
}
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");
    }}