在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hystrix.enable需要设置为false,而当不开熔断时,我们也有几种方法把拿到服务端的异常信息,下面总结一下。

  1. try...catch方法
  2. feign异常拦截器

try...catch方法

这个方法比较直观,也最好理解,但业务层会有很多try...catch这种代码,所以不是很推荐。

注意:虽然服务端方法返回为ResponseEntity,但出现4xx,5xx这些异常时,还是会抛出一个FeignException的异常,而这对于服务来说,向前端抛出的还是5xx的服务端异常,这不是我们希望看到的。

try { ResponseEntity> body = productClient.add(name); if (body.getStatusCode().equals(HttpStatus.OK)) { return "test"; } else { return body.getBody().toString(); } } catch (FeignException ex) { return ex.getMessage(); }

feign异常拦截器

我们比较推荐使用这个方法,注册一个bean对象,当feign调用出现异常时,会触发这个方法,然后我们再统一处理这个异常,向下流继续抛出加工后的错误信息。

/** * feign异常拦截器,当从feign抛出异常时走这个对象. */@Configuration@Slf4jpublic class FeignClientErrorDecoder implements ErrorDecoder { @Override public Exception decode(String methodKey, Response response) { logger.info("feign client response:

feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法相关推荐

  1. feign调用不经过网关

    feign调用不经过网关,是一种http的调用 需要携带网关的session信息,创建一个feign的拦截器实现  RequestInterceptor 列子: @EnableFeignClients ...

  2. 使用feign调用注解在eureka上的微服务,简单学会微服务

    使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...

  3. feign直接走熔断_SpringCloud基于OpenFeign实现服务熔断降级

    在Spring Cloud微服务架构中,往往不同的业务模块或者不同的业务功能被抽象成独立的微服务,这样存在以下几点优势: 业务拆分后,每个微服务相对独立,对整个系统的架构容易理解: 每个微服务功能简单 ...

  4. java调用dubbo服务器_dubbo源码分析-服务端注册流程-笔记

    前面,我们已经知道,基于spring这个解析入口,到发布服务的过程,接着基于DubboProtocol去发布,最终调用Netty的api创建了一个NettyServer. 那么继续沿着Registry ...

  5. html5调用app服务端,webapp调用摄像头(H5+),并发送给服务端

    //调用摄像头 let cmr = window.plus.camera.getCamera(); //获取图片格式(后面的参数要用到,虽然文档说是必填,但是实际不加也能成功) let fmt=cmr ...

  6. php设置对ws的请求不拦截,phpsocket服务端能不能在网页端开启?而不是只能用CLI模式开启...

    最近在做基于php socket的聊天程序,但是遇到了个问题: 开启ws端口只能在CMD下用php server.php的方式来开启端口,并不能关闭该CMD命令行窗口,一旦关闭就断开了socket连接 ...

  7. zuul网关找不到服务_网关zuul中对所有下游服务权限做控制zuulauth

    在单体应用架构下,常见的用户-角色-菜单权限控制模式,譬如shiro,就是在每个接口方法上加RequireRole,RequirePermission,当调用到该方法时,可以从配置的数据库.缓存中来进 ...

  8. API网关如何实现对服务下线实时感知

    上篇文章<Eureka 缓存机制>介绍了Eureka的缓存机制,相信大家对Eureka 有了进一步的了解,本文将详细介绍API网关如何实现服务下线的实时感知. 一.前言 在基于云的微服务应 ...

  9. asp.net页面回传与js调用服务端事件、PostBack的原理详解

    ASP.ENT中,有两种实现页面PostBack的机制,不管是哪种回传方式,最终均是Form表单提交. 一.原始的Form表单提交 WebControls中的Button和ImageButton控件, ...

最新文章

  1. 背景属性的相关属性设置
  2. 汇编: 用int中断改变ip,实现loop循环
  3. 转:用GDB调试程序
  4. vmware NAT模式下虚拟机不能连外网解决办法
  5. java定义静态set集合_java集合之set
  6. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
  7. (Redis设计与实现-6) 频道的订阅与退订
  8. [HDOJ5573]Binary Tree(找规律,贪心)
  9. AnalogClock和DigitalClock时间和日期控件
  10. textfield获取其中内容_41页内容介绍电气安装工程,详细介绍施工图纸,值得收藏...
  11. Android 系统 (129)---ODM 开发用户常见需求文档(三)
  12. mysql 性能剖析_MySQL服务器性能剖析(一)
  13. Scipy教程 - 距离计算库scipy.spatial.distance
  14. LeetCode题解——Reverse Integer
  15. 四皇后问题(同理适用于n皇后问题)图片版
  16. css宋体代码_CSS字体代码
  17. elasticsearch-7.15.2 配置IK中文分词器+拼音分词
  18. 非线性最小二乘问题的分析与理解(附高斯牛顿法matlab代码)
  19. 模拟调节器和数字计算机如何实现PID控制,模拟PID-调节器设计及数字化实现.doc...
  20. 刮刮卡 vue canvas

热门文章

  1. UI设计培训分享:2021年UI设计风格新风向标主要体现在哪些方面
  2. 软件测试开发:常见测试类型概念
  3. 【阿圆实验】Consul HA 高可用方案
  4. 面试题:2018最全Redis面试题整理
  5. C语言 · 征税程序
  6. NDK开发 - C/C++ 访问 Java 变量和方法
  7. 百度地图 ip查询 service
  8. 文件时间信息在测试中的应用
  9. Breakpad查C++崩溃问题
  10. preparedStatement平台: