4

我们将Spring-bootSpring-cloudSpring-cloud-netflixSpring-cloud -feign 一起使用。

我们正在创建我们的网关应用程序,该应用程序Feign将尝试与我们的微服务通信authentication以验证其凭据。在这里您可以看到我们的 Feign 客户端的示例authentication

@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);
}

问题是,我们如何处理客户可能提出的所有异常?我的意思是,我们如何才能捕捉到 aNetworkException或 aTimeoutException已被抛出?我们已经定义了自己的ErrorDecoder,但似乎这种“侦听器”仅在请求到达并返回响应(在我们的例子中来自authentication客户端)时才起作用。那么,我们如何管理其他异常呢?

最好的,

4

1 回答 1

1

错误解码器正在解码 HTTP 错误响应(500、404、401 等)。异常会在客户端调用中冒泡,所以使用try/catch应该可以。

    try {
        return client.home();
    } catch (RuntimeException e) {
        e.printStackTrace();
        throw e;
    }
于 2017-01-20T19:51:03.813 回答