如何管理Feign错误?

时间:2017-01-20 16:01:29

标签: spring-boot spring-cloud spring-cloud-netflix spring-cloud-feign

我们正在使用 Spring-boot Spring-cloud Spring-cloud-netflix Spring-cloud-feign < / em>的

我们正在创建我们的网关应用程序,在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);
}

问题是,我们如何处理客户可能提出的所有例外情况?我的意思是,我们如何能够抓住NetworkExceptionTimeoutException被抛出?我们已经定义了我们自己的ErrorDecoder但看起来这种“监听器”只在请求到达并且返回响应时才会起作用(在我们的例子中来自authentication客户端)。那么,我们如何管理其他例外呢?

最佳,

1 个答案:

答案 0 :(得分:1)

错误解码器正在解码HTTP错误响应(500,404,401等...)。在客户端调用中会出现异常,因此使用try/catch应该可以正常工作。

    try {
        return client.home();
    } catch (RuntimeException e) {
        e.printStackTrace();
        throw e;
    }