我们正在使用 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);
}
问题是,我们如何处理客户可能提出的所有例外情况?我的意思是,我们如何能够抓住NetworkException
或TimeoutException
被抛出?我们已经定义了我们自己的ErrorDecoder
但看起来这种“监听器”只在请求到达并且返回响应时才会起作用(在我们的例子中来自authentication
客户端)。那么,我们如何管理其他例外呢?
最佳,
答案 0 :(得分:1)
错误解码器正在解码HTTP错误响应(500,404,401等...)。在客户端调用中会出现异常,因此使用try/catch
应该可以正常工作。
try {
return client.home();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}