我的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”方法中的代码
答案 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事了。