覆盖普通的Spring异常处理程序

时间:2020-09-28 15:58:53

标签: spring spring-boot resttemplate

我正在一个项目中实现这样的通用异常处理程序:

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
public class CommonExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<Object> handleException(final Exception e) {
        log.error(e.getMessage(), e);
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

现在,我想使用不受此异常处理影响的rest模板,但是无论我尝试什么,所有示例均由通用处理程序处理。 知道如何利用带有自定义错误处理程序的rest模板来覆盖上面的模板吗?

无法对通用异常处理程序进行修改,因此我必须找到一种解决方法。

1 个答案:

答案 0 :(得分:1)

我建议两种解决方案:

  • 如果您抛出{/ {1}}无法处理的特定/新异常,则可能会导致重复的异常
  • 或者,在您的休息呼叫级别本地捕获异常:
@RestControllerAdvice