Притворная ошибка декодера: Ошибка обработки запроса; вложенное исключениеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Притворная ошибка декодера: Ошибка обработки запроса; вложенное исключение

Сообщение Anonymous »

Я хочу создать обработчик ошибок для своего клиента Feign, поэтому я создал CustomErrorDecoder, обновил конфигурацию Feign для использования этого нового декодера ошибок, создал собственные исключения и, наконец, выдал исключение. Однако при возникновении исключения я получаю эту ошибку и не знаю, в чем проблема. Вот сообщение об ошибке:

Обработка запроса не удалась; вложенное исключение
fr.application.configuration.Exceptions.NotFoundException:
произошла ошибка. error.already_closed_or_unknown в
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
~[spring-webmvc-5.3.9.jar:5.3.9] в
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
~[spring-webmvc-5.3.9.jar:5.3.9]

это декодер ошибок:
public class CustomErrorDecoder implements ErrorDecoder {
private final ErrorDecoder defaultErrorDecoder = new Default();

@Override
public Exception decode(String methodKey, Response response) {
ErrorMessage message;
try (InputStream bodyIs = response.body()
.asInputStream()) {
ObjectMapper mapper = new ObjectMapper();
message = mapper.readValue(bodyIs, ErrorMessage.class);
} catch (IOException e) {
return new Exception(e.getMessage());
}
return switch (response.status()) {
case 400 -> new BadRequestException(message.getMessage() != null ? message.getMessage() : "Bad Request");
case 404 -> new NotFoundException(message.getErrorCode() != null ? message.getErrorCode() : "Not found");
default -> defaultErrorDecoder.decode(methodKey, response);
};
}
}

конфигурация feign:
private static T createClient(Class clientClass, String baseUrl) {
BUSINESS_LOGGER.info("Creating client for class {} with base URL {}", clientClass, baseUrl);
return Feign.builder()
.encoder(new JacksonEncoder())
.decoder(new JacksonDecoder())
.errorDecoder(new CustomErrorDecoder())
.logger(new Slf4jLogger(clientClass))
.logLevel(feign.Logger.Level.FULL)
.target(clientClass, baseUrl);
}

и вот как я создаю исключение
try {
return apiClient.endPoint(Url,
body);
} catch (NotFoundException | BadRequestException | InternalServerErrorException e) {
BUSINESS_LOGGER.error( e.getMessage());
throw e;
}

и endPint моего притворного клиента
@RequestLine("POST {endpoint}")
@Headers({
"Content-Type: application/json",
})
ObjectDto endPoint( @Param("endpoint") String endpoint, ObjectDto object);


Подробнее здесь: https://stackoverflow.com/questions/790 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»