首页 > 解决方案 > Spring重试未处理异常

问题描述

我有一个自定义异常 CalledMyException正在由MyExceptionHandler.class

一切都很好,但是我需要在一个函数上实现Spring Retry,但是当我这样做时,该类中的异常停止处理,这是一个简单的示例:

我的自定义异常

public class MyException extends RuntimeException {

    private String code;

    public MyException(String code) {
        super(code);
        this.code = code;
    }
}

异常处理程序

@RestControllerAdvice
public class MyExceptionHandler extends RuntimeException{


@ExceptionHandler(RuntimeException.class)
    public Object handleError(RuntimeException ex) throws IOException {
       if(ex instanceof MyException){
          System.out.println("Handled")
       }
    }
}

重试功能

@Retryable(exclude = MyException.class, include = TimeoutException.class, maxAttemptsExpression = "4",
        backoff = @Backoff(delayExpression = "100"))
public void retryFunction() {
    System.out.println("do something");
    throw new MyException("333");
}

我尝试使用exclude让它忽略异常,但它仍然抛出并且不处理它。

知道如何让它再次工作。

标签: javaspringexceptionspring-retry

解决方案


推荐阅读