代码之家  ›  专栏  ›  技术社区  ›  giri

制度上的差异。出口(0),系统。出口(-1),系统。Java中的出口(1)

  •  258
  • giri  · 技术社区  · 16 年前

    我想知道以下两种语言在Java中的区别

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

    什么时候我必须正确使用上述代码?

    11 回复  |  直到 11 年前
        1
  •  266
  •   RubioRic Danail Tsvetanov    10 年前

    exit参数应该限定程序的执行是好是坏。这是一种来自较旧编程语言的遗传,在这些语言中,了解是否出了问题以及什么出了问题是很有用的。

    退出密码是

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

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

    • 1-127 是用户定义的代码(通过调用 exit(n) )
    • 128-255 是否由于不同的unix信号而终止生成代码,如 西格塞格夫 或 西格特姆

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

        2
  •  140
  •   catch32    11 年前

    Zero =>一切都好吗

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

    Negative =>一些我完全没有预料到的错误(系统错误-意外异常-外部强制终止,例如。 kill -9 )

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

    这里有很多好东西 standard exit-codes here

        3
  •  58
  •   Premraj    9 年前

    System.exit(system call) 通过启动关闭序列来终止当前运行的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 或更高的执行失败率。

        4
  •  8
  •   clemens    8 年前

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

        5
  •  0
  •   androminor    6 年前

    系统出口(0) 按照惯例,零状态代码表示成功终止。

    系统出口(1) -这意味着由于某些错误导致终止失败

        6
  •  4
  •   Lova Chittumuri    9 年前

    答案如下。

    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
    
        7
  •  2
  •   nomad    9 年前

    一个好的抓取是任何错误代码>255将转换为错误代码%256。 如果使用自定义错误代码,则应特别小心>255,并在应用程序逻辑中预期准确的错误代码。 http://www.tldp.org/LDP/abs/html/exitcodes.html

        8
  •  1
  •   parsa    8 年前

    系统中输入的数字的差异。exit()在其他答案中有解释。但真正的区别在于这个系统。exit()是返回到调用进程的代码。如果操作系统正在调用该程序,那么返回代码将告诉操作系统,如果操作系统正在调用该程序。exit()返回0表示一切正常,但如果没有出现问题,则在父进程中可能会有一些处理程序

        9
  •  11
  •   Vishnu Haridas    10 年前

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

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

        10
  •  -9
  •   LEGEND MORTAL    9 年前
    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); 
    }
    

    }

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

        11
  •  0
  •   nguyên    9 年前

    正如其他人回答的那样 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 --
    
        12
  •  0
  •   Asif    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");
        }}
    

    在这里 出口(0) :通常用于表示成功终止。 出口(1)或出口(-1) 或任何其他非零值——通常表示终止不成功。 不管你把什么作为参数传递,控制流总是会出来,并且不会打印下一步的任何内容,也可能是catch block as s、 长度 将在此处或最终抛出异常

    推荐文章