我们使用org.springframework.web.reactive.function.client.webclient
和reactor.netty.http.client.httpclient
作为Spring 5.1.9的一部分,使用exchange()
方法发出请求。此方法的文档强调了以下内容:
...使用exchange()时,应用程序有责任使用任何响应内容,而不管场景如何(成功、错误、意外数据等)。不这样做会导致内存泄漏。
try {
...
ClientResponse resp = client.method(method).uri(uri).syncBody(body).exchange().block();
ResponseEntity<String> entity = resp.toEntity(String.class).block();
return entity;
} catch (Exception e) {
// log error details, return internal server error
}
如果我理解实现,那么如果请求被成功调度,exchange()
将始终给我们一个响应,而不管响应代码是什么(例如4xx、5xx)。在这个场景中,我们只需要调用toentity()
来使用响应。我关心的是错误场景(例如,没有响应,低级连接错误,等等)。上面的异常处理会捕获所有其他场景吗?它们中的任何一个会有需要使用的响应吗?
注意:ClientResponse.ReleaseBody()
仅在5.2中引入
响应必须在发出请求时使用,但如果您不能执行请求,则可能在此之前抛出了异常,因此响应不会有问题。
在文档中说:
注意:当通过WebClient exchange()方法使用ClientResponse时,您必须通过使用以下方法之一确保使用或释放主体:
public Mono<String> someMethod() {
return webClient.method(method)
.uri(uri)
.retrieve()
.onStatus(
(HttpStatus::isError), // or the code that you want
(it -> handleError(it.statusCode().getReasonPhrase())) //handling error request
)
.bodyToMono(String.class);
}
private Mono<? extends Throwable> handleError(String message) {
log.error(message);
return Mono.error(Exception::new);
}
在本例中,我使用了Exception,但是您可以创建一些更具体的异常,然后使用一些异常处理程序返回所需的http状态。不建议使用块,更好的方法是向前传递流。
问题内容: 我试图弄清楚如何使用boto3进行正确的错误处理。 我正在尝试创建一个IAM用户: 成功调用create_user后,我得到一个整洁的对象,其中包含API调用的http状态代码和新创建的用户的数据。 例: 这很好。但是,如果失败(例如用户已经存在),我只会得到一个类型为botocore.exceptions.ClientError的对象,其中只有文本可以告诉我出了什么问题。 示例:Cl
问题内容: 如何处理此调用上的etimedout错误? 有没有办法等待更长的时间?还是再次请求远程文件? 究竟是什么会导致此错误?仅超时? 问题答案: 这是由于在给定时间内未收到您的请求响应(通过 请求模块选项)引起的。 基本上首先要捕获该错误,您需要在上注册一个处理程序,因此不会再抛出未处理的错误:。这里还有一些解释。 在处理程序中,您可以检查错误是否为ETIMEDOUT并应用自己的逻辑:。 如
本文向大家介绍如何处理jQuery AJAX错误?,包括了如何处理jQuery AJAX错误?的使用技巧和注意事项,需要的朋友参考一下 处理jQuery AJAX错误。每当AJAX请求失败时,ajaxError(callback)方法都会附加一个要执行的函数。这是一个Ajax事件。 这是此方法使用的所有参数的描述- callback- 要执行的功能。用于该请求的XMLHttpRequest和设置将
我正在探索AWS Kinesis的数据处理要求,该要求用基于流的方法取代旧的批处理ETL处理。 该项目的关键要求之一是在以下情况下重新处理数据的能力: 发现并修复错误,然后重新部署应用程序。数据需要从一开始就重新处理 这里很好地记录了Kafka-https://cwiki.apache.org/confluence/display/KAFKA/Kafka流数据(重新)处理场景的场景。 我在Kine
我的服务器为所有请求返回一个基本的JSON结构,如下所示: 其中可以是true或false,数据可以返回许多内容,从到应用程序可能需要的数据。 需要更改/添加到我的改型API调用中的内容是什么?