java如何从java内部捕获退出代码?

时间:2017-06-13 14:39:35

标签: java exception process try-catch exit-code

我的java代码运行一个抛出退出代码的main方法。

如何捕获退出代码而不是停止运行时?

        ConfigValidator.main(new String[] {"-dirs", SdkServiceConfig.s.PROPERTIES_FILE_PATH});

我想用

        ProcessBuilder builder = new ProcessBuilder(commands);
        Process process = builder.start();
        int waitFor = process.waitFor();
        int a = process.exitCode()

但是如何运行它来运行java代码?

我无法更改“main”方法中的代码

2 个答案:

答案 0 :(得分:0)

请尝试使用Thread.sleep()方法以避免程序退出,但我不确定它是否适合您。您可能需要通过系统输入或smth来中断应用程序的执行。像这样。

答案 1 :(得分:0)

java代码不会抛出退出代码。

那是因为退出代码是一个整数,并且你不能抛出一个整数,你只能抛出异常。

java代码退出并带有退出代码。

(我希望我可以说java代码返回退出代码,但不幸的是,java语言的设计者决定让main()函数返回void而不是退出代码,这使事情有点困难。)

以下stackoverflow答案建议使用防止调用System.exit()的安全管理器。因此,尝试调用System.exit()将导致SecurityException,然后您可以从调用main()函数的位置捕获该异常。

Stackoverflow:Java: How to test methods that call System.exit()?

但当然正确的做法是重组main(),以便它不会调用System.exit(),这样你就不必做那样的hacky事了。