Spring boot 如何处理spring boot中的每个异常(而不是rest)

Spring boot 如何处理spring boot中的每个异常(而不是rest),spring-boot,exception,Spring Boot,Exception,我创建了一个spring引导应用程序,该应用程序在启动后执行特定任务,如果完成,则返回0: @EventListener public void onStart(ContextStartedEvent start){ log.info("Application started."); doTheJob(); log.info("Import finished."); applicationContext = start.g

我创建了一个spring引导应用程序,该应用程序在启动后执行特定任务,如果完成,则返回0:

@EventListener
public void onStart(ContextStartedEvent start){
    log.info("Application started.");

    doTheJob();
    log.info("Import finished.");
    applicationContext = start.getApplicationContext();
    SpringApplication.exit(applicationContext, () -> 0);
}
这很好用。但在异常情况下,应用程序当然不会停止。 如何获取每个异常并返回另一个代码

我试着注释另一种方法:

@ExceptionHandler(value = Throwable.class)
public void handleAll(){
    SpringApplication.exit(applicationContext, () -> -1);
}

但这并非例外。如何做到这一点?

将同一个方法移动到带有注释@RestControllerAdvice的单独类中,并确保它可用于spring上下文

@RestControllerAdvice
public class ExHandler{

@ExceptionHandler(value = Throwable.class)
public void handleAll(){
SpringApplication.exit(applicationContext, () -> -1);
}}

我猜你的意思是“@ControllerAdvice”不知道这总是有效的(不仅仅是“controllers”:-)同意
@RestController
advice只是说
@ControllerAdvice+@ResponseBody
的一种更简单的方式。在这种情况下,两者都有效。但是
ControllerAdvice
更合适,因为他没有试图返回任何东西@dermoritz。这不起作用-我尝试了throwable并抛出了一个illegalargumentexception,但我的方法在主应用程序范围内的可用bean中没有调用?是的,是相同的包,@EventListener方法被调用,所有bean都被很好地注入