system.exit()在Java中的用途在哪里?

时间:2014-01-14 03:14:09

标签: java main exit system.exit

似乎this是从return status code获得main的一种方法。 但我想知道这int去哪儿了?我在eclipse上尝试过,但是我没有在控制台上看到它。 我如何获得status code

public static void main(String[] args){
         int status = 123;
          System.exit(status);
     }

5 个答案:

答案 0 :(得分:5)

退出代码通常返回到运行应用程序的脚本或程序,例如,我编写了以下简单的java程序

class Test {

    public static void main(String[] args) {
        System.exit(123);
    }

}

然后我使用javac Test.java编译它 接下来,我编写了一个简单的bash脚本,它将运行java Test然后打印出像这样的退出代码

#!/bin/bash

java Test
echo $?

当我运行bash脚本时,数字123将打印到屏幕上,因为$?是运行的最后一个命令的退出代码。

答案 1 :(得分:4)

该值称为exit status

  

计算机编程中进程的退出状态或返回代码是   从子进程(或被调用者)传递给父进程的小数字   进程(或调用者)完成特定的执行后   程序或委派任务。

这是一个用于演示它的Java测试

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Foo {
    public static void main(String[] args) throws Exception {
        if (args.length != 0)
            System.exit(Integer.parseInt(args[0]));
        ProcessBuilder builder = new ProcessBuilder(Arrays.asList("java", "Foo", "42"));
        Process process = builder.start();
        System.out.println(process .waitFor());     
    }
}

编译并运行此程序,不带任何参数。它会打印

42

这个java程序启动子进程。当该进程结束时,它将在System.exit(?)中传递给它的值返回到其父进程,然后将其打印出来。

答案 2 :(得分:3)

退出代码(status)在JVM终止时返回给操作系统,所以如果你通过终端/命令行运行它,你会看到程序是否异常终止。

答案 3 :(得分:1)

C:\JavaTools>javac SystemExit.java

C:\JavaTools>java SystemExit

C:\JavaTools>echo %ERRORLEVEL%
123

答案 4 :(得分:0)

退出代码将返回给操作系统。返回0表示程序退出时没有错误,反之亦然。

返回不同的错误代码意味着不同的原因。这可以帮助OS(或父进程)找出该程序的错误。