有没有一种方法可以在Spring Boot中创建集中式异常处理机制。我有一个自定义异常,该异常是我从多个@Component
类中抛出的,我希望将其捕获在一个类/处理程序中。
这是不是 REST API或Controller触发的调用。我尝试将@ControllerAdvice
与@ExceptionHandler
一起使用。但没有运气。以下示例显示了我正在尝试实现的目标。方法句柄未触发。我正在使用Spring Boot v2.1.1
CustomException
public class CustomException extends RuntimeException {
public CustomException(String errorMessage, Throwable err) {
super(errorMessage, err);
}
}
处理程序
@ControllerAdvice
public class CatchCustomException {
@ExceptionHandler(value = CustomException.class )
public void handle (CustomException e)
{
System.out.println(e.getMessage());
}
}
组件类
@Component
@EnableScheduling
public class HandlingExample {
@Scheduled(fixedRate = 3000)
public void method1(){
throw new CustomException("Method1++++", new Exception());
}
@Scheduled(fixedRate = 1000)
public void method2(){
throw new CustomException("Method2----", new Exception());
}
}
答案 0 :(得分:0)
spring在不同的上下文中有许多错误处理程序,对于您的情况,您应该使用 @Schedule 处理错误异常,因此您可以自己创建 TaskScheduler < / p>
@Bean
public TaskScheduler taskScheduler() {
ScheduledExecutorService localExecutor = Executors.newSingleThreadScheduledExecutor();
ConcurrentTaskScheduler taskScheduler = new ConcurrentTaskScheduler(localExecutor);
taskScheduler.setErrorHandler(new YourErrorHandler());
return taskScheduler;
}
public class YourErrorHandler implements ErrorHandler {
@Override
public void handleError(Throwable t) {
// TODO Auto-generated method stub
}
}