我们将Spring boot与Spring cloud一起使用,并将Spring cloud netflix和Spring-cloud foreign一同使用。
我们正在创建网关应用程序,在Feign
的帮助下,该应用程序将尝试与authentication
微服务进行通信,以验证其凭据。在这里,您可以看到我们的Feignauthentication
客户端的示例:
@FeignClient(value="auth", configuration = AuthClientConfiguration.class)
public interface AuthClient {
@RequestMapping(method = RequestMethod.GET, value = "/tokens", consumes = MediaType.APPLICATION_JSON_VALUE)
Single<Session> getSession(@RequestHeader("Authorization") String token);
}
问题是,我们如何处理客户可能提出的所有例外情况?我的意思是,例如,我们如何才能捕捉到抛出了NetworkException
或TimeoutException
?我们已经定义了自己的ErrorDecoder
,但这种"类型的侦听器"似乎只有在请求到达并返回响应(在我们的案例中是来自authentication
客户端)时才起作用。那么,我们如何管理其他例外情况呢?
最佳,
错误解码器正在解码HTTP错误响应(500404401等)。客户端调用中会出现异常,因此使用try/catch
应该可以工作。
try {
return client.home();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}