Связанный с весенней загрузкой resttemplate, когда я вызываю API, и он выдает ошибку, я не могу поймать это в шаблоне отдыха - PullRequest
0 голосов
/ 23 января 2020

В шаблоне остальных я вызываю API, и происходит ошибка (моно исключение), там я поймал исключение и вывел оттуда то же исключение, в шаблоне остальных я получаю httpserverexception, а не исключение что я бросил. Мне нужно исключение, которое исходит от API, как найти исключение, которое исходит от API Любая помощь приветствуется

1 Ответ

0 голосов
/ 23 января 2020

Исключение, которое вы выбросили на другом сервере, должно будет отправить ответ с исключением на его теле, и вам нужно будет получить необработанное тело от RestClientResponseException.

Все сгенерированные исключения вызовом RestTemplate являются подклассы из HttpClientErrorException (если происходит 4xx) или HttpServerErrorException (если происходит 5xx), таким образом, эти два являются подклассами из HttpStatusCodeException (который является подклассом RestClientResponseException)

Я не предлагаю этого, но вы можете обобщить и обработать оба из них как HttpStatusCodeException.

Причина, по которой я не предлагаю это, заключается в том, что вы можете захотеть иметь другую обработку, основанную на клиентская ошибка или ошибка сервера.

Эти два примера должны работать:

Сцепление как HttpStatusCodeException (обобщение)

try {
    restTemplate.exchange(...); // do your request (can use get, post, etc..)
} catch (HttpStatusCodeException e) {
    log.info("Error occurred: {}", e.getResponseBodyAsString());
}

Отлов как HttpClientErrorException и HttpServerErrorException

try {
    restTemplate.exchange(...); // do your request (can use get, post, etc..)
} catch (HttpClientErrorException e) {
    log.info("OH NO! IT'S AN ERROR FROM THE CLIENT: {}", e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
    log.info("OH NO! IT'S AN ERROR FROM THE SERVER: {}", e.getResponseBodyAsString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...