我有一个使用CommandLineRunner实现的Spring Boot应用程序。如果发生任何错误/异常,我希望返回-1作为退出代码,并在没有异常时返回0。
我已经尝试了System.exit(),SpringApplication.exit(MyApplication.context, exitCodeGenerator)等方法。但是当我抛出异常时,它仍然返回0!
我已经尝试了这里的解决方案:
public class MyApplication implements CommandLineRunner{
private static Logger logger = LoggerFactory.getLogger(MyApplication.class);
@Override
public void run(String... args) throws Exception {
// to do stuff. exception may happen here.
}
public static void main(String[] args) {
try{
readSetting(args);
SpringApplication.run(MyApplication.class, args).close();
}catch(Exception e){
logger.error("######## main ########");
java.util.Date end_time = new java.util.Date();
logger.error(e.getMessage(), e);
logger.error(SystemConfig.AppName + " System issue end at " + end_time);
System.exit(-1);
}
System.exit(0);
}
...
}
我已经尝试了System.exit(),SpringApplication.exit(MyApplication.context, exitCodeGenerator)等方法。但是当我抛出异常时,它仍然返回0!
我已经尝试了这里的解决方案:
https://sdqali.in/blog/2016/04/17/programmable-exit-codes-for-spring-command-line-applications/
请帮忙!
System.exit(-1)
移动到public void run
中,而不是在主函数中使用它。 - Patrick