webflux如何处理全局错误,如找不到404页面

时间:2018-04-28 03:32:38

标签: spring-webflux

我使用@restcontrolleradvice和@ExceptionHandler,但我可以处理控制器异常。服务器错误如404,500无法处理。

@RestControllerAdvice
public class HttpExceptionHandler {

    private static final Logger logger = LoggerFactory.getLogger(HttpExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    public String exceptions(Exception e) {
        String code = Global.ERR_UNKNOWN;
        if (e instanceof MethodNotAllowedException) {
            code = Global.ERR_HTTP_METHOD;
        }
        return code;
    }
}

1 个答案:

答案 0 :(得分:0)

如果你正在使用Spring Boot,这已经为你完成了,你可以很容易地自定义这种支持(参见Spring Boot reference docs)。

如果你使用的是普通的Spring Framework,那么你需要注册一个自定义的WebExceptionHandler bean来处理它(参见Spring Framework reference docs)。因为这些错误可能在请求处理期间的任何时刻发生(即不仅在控制器处理阶段期间,而且在响应编码期间,在WebFilter ...内),API的级别相当低,您需要处理原始DataBuffer个实例。如果您正在寻找有关如何实现更高级错误处理支持的灵感,您还可以查看at what's done in Spring Boot