как webflux может обработать глобальную ошибку, например, страница 404 не найдена - PullRequest
0 голосов
/ 28 апреля 2018

Я использую @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 голосов
/ 29 апреля 2018

Если вы используете Spring Boot, это уже сделано для вас, и вы также можете легко настроить эту поддержку (см. Справочные документы Spring Boot ).

Если вы используете простую Spring Framework, вам нужно зарегистрировать пользовательский компонент WebExceptionHandler, чтобы справиться с этим (см. Справочные документы Spring Framework ). Поскольку эти ошибки могут возникать в любой момент во время обработки запроса (т. Е. Не только на этапе обработки контроллера, но также и во время кодирования ответа, в пределах WebFilter ...), уровень API там довольно низок, и вам нужно иметь дело с необработанные DataBuffer экземпляры. Если вы ищете вдохновение для достижения поддержки обработки ошибок более высокого уровня, вы также можете взглянуть на то, что сделано в Spring Boot .

...