解决FeignException返回基础服务抛出的状态码-程序员宅基地

技术标签: 和光同尘  

接上篇文章


这样,虽然能够很好的处理@Valid出现的异常,但是如果是主动抛出的自定义异常和Assert断言异常,则会进入FeignException.errorStatus处理,查看源码


它将message封装了feign抛出的status500以及body的content(即你主动抛出的message信息)

意味着,断言异常我们可以通过ErrorDecoder的方式再通过全局异常拦截获取message信息,如下图

status 500 reading IActivityFeignClient#add(ActivityDto); content:
{"timestamp":1524549437919,"status":500,"error":"Internal Server Error","exception":"java.lang.IllegalArgumentException","message":"标题不能为空","path":"/v1/activity/"}

因为此时,我并不需要基础服务抛出的具体code,

但是,我的初心是,假设基础服务抛出了自定义异常code比如1001,我希望调用方能准确获取到这个code状态码,但是上述通过ErrorDecoder的方式,只封装了status500和Message信息,body里面丢失了code,无奈,只能放弃此方式

直接在全局异常中捕获FeignException,获取原汁原味的exception异常信息,并约定好,Assert不允许在@HystrixCommand修饰的方法里使用,因为会触发服务熔断!

思考:为什么不通过ErrorDecoder处理,可以获取到code,通过errorDecoder处理了,则丢失了code?


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37268363/article/details/80063811

智能推荐

【5G之道】第七章:上行链路物理层处理_5g occ-程序员宅基地

文章浏览阅读4k次,点赞3次,收藏23次。传输信道处理:上行链路共享信道UL-SCH的物理层处理,以及随后以基本的OFDM时频网格的形式到上行链路物理资源的映射;处理步骤:与下行链路类似,上行链路载波聚合情况下,不同组分载波对应带有独立物理层处理的单独传输信道:对每个传输块末尾添加一个CRC;编码分割,对于大于6144bit的传输块分割,并对每个码块添加CRC;信道编码;速率适配和物理层混合ARQ功能;比特级加扰;数据调制;DFT预编码;天线映射;至物理资源的映射:调度器分配一组用于上行链路传输的资源块对,用于承载UL-S_5g occ

torchvision.datasets.FashionMNIST报错[WinError 10054] 远程主机强迫关闭了一个现有的连接_torchvision.datasets下载mnist显示远程主机强迫关闭了一个现有的连接-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏6次。项目场景: 在李沐老师视频课Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】中用到了FashionMNIST数据集。问题描述:trans = transforms.ToTensor()#下载到上一级目录的data文件中,下载的是训练数据集,类型时tensor,从网上下载mnist_train = torchvision.datasets.FashionMNIST( root="../data", train=True, transform=trans, down_torchvision.datasets下载mnist显示远程主机强迫关闭了一个现有的连接

Python 子类不可以直接访问父类的私有方法和私有属性_python 私有成员变量 子类没法调用?-程序员宅基地

文章浏览阅读2.7k次。子类对象不能在自己的方法内部直接访问父类的私有方法和私有属性。注意:在对象的方法内部是可以访问自己所在类的私有属性和私有方法。代码举例:class A(): #父类 def __init__(self): self.num1 =100 self.__num2 = 200 def __test(self): ..._python 私有成员变量 子类没法调用?

【完结篇】c# winfrom 工作流程图开发、自动表单开发、拖拽控件、流程图自定义拖拽连线、 全自动报表表单设计_c# 开发拖拽流程软件-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏8次。报表配置完毕后,前端可以进行根据配置条件筛选结果。表单自由设计,支持全选、移动等功能。报表配置,根据表单自动配置报表。系统设置-角色与权限管理。流程节点配置-经办人。流程节点配置-可写字段。流程节点配置-流转设置。..._c# 开发拖拽流程软件

大数据考研毕设选题推荐-程序员宅基地

文章浏览阅读791次,点赞17次,收藏7次。且不提你是否真的有能力做毕设的时候把初试准备好(我自认做不到分心,为了备战初试,我几乎大四所有课程都是70左右飘过),你能保证你的毕设内容一定和目标院校的复试考察内容相关或者能成为老师眼中的加分点吗?因为考试是一件“千人过独木桥”的事情。拿我们计算机举例子,A的毕设就是一个在线网站,当时老师体谅A要二战,给了我个简单的题目,确实,毕设比别人轻松多了(相对而言,别人都是什么算法,这那的)大部分人的精力集中度是有限的,我还是建议优先做当前最重要的事情,如果考研是你当下最看重的事情,建议你有限把考研做好。

轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)_fastfs windows-程序员宅基地

文章浏览阅读2w次。轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)_fastfs windows

随便推点

Arduino编译错误解决办法:fork/exec:…\arm-none-eabi-g++.exe: The filename or extension is too long_ardinuo运行报错:exec: "/bin/arm-none-eabi-g++": file d-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏6次。编译错误解决办法:fork/exec:…\arm-none-eabi-g++.exe: The filename or extension is too long内容来自Edge Impulse当使用Arduino编译STM或Arduino文件时,当要编译的目标文件列表超过命令行中的Windows最大字符数(32k)时,通常会引发此错误。如果使用的2.0版本以下IDE版本,可参考以下方法:如果是Arduino则使用前两种方法即可,Adafruit、esp32、STM32参照后面的方法1.在Ardu_ardinuo运行报错:exec: "/bin/arm-none-eabi-g++": file does not exist

Unicode的基本知识总结_61448 uncode是什么-程序员宅基地

文章浏览阅读680次。Unicode的基本知识总结前言一、Unicode是什么?二、Unicode的编码与实现1.Unicode的编码方式2.Unicode的实现方式总结前言秋招面试某公司的时候,面试官突然发难,问起了Unicode的相关知识,使我手足无措,今天抽出时间来专门学习整理一下相关知识一、Unicode是什么?Unicode,中文又称万国码、国际码、统一码、单一码,是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。二、Unicode._61448 uncode是什么

富文本编辑器:editor.md_editor编辑器-程序员宅基地

文章浏览阅读2.7k次,点赞5次,收藏21次。富文本编辑器Editormd简介Editor.md——功能非常丰富的编辑器,左端编辑,右端预览,非常方便,完全免费官网:https://pandao.github.io/editor.md/主要特征支持“标准” Markdown / CommonMark 和 Github 风格的语法,也可变身为代码编辑器;支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能;支持 ToC 目录(Table o_editor编辑器

一读就错的68个姓氏,第一个就读错了_任作为姓氏很多人读错-程序员宅基地

文章浏览阅读733次。一读就错的68个姓氏,第一个就读错了转载:http://cul.qq.com/a/20170414/032417.htm[摘要]我国有很多姓氏,看起来都是常见的字,一写就会,可是一读,就不是那个样子了,往往读错,让人啼笑皆非。我国有很多姓氏,看起来都是常见的字,一写就会,可是一读,就不是那个样子了,往往读错,让人啼笑皆非。中国的姓氏中,除了有生僻字,还有不少容易读错的姓_任作为姓氏很多人读错

Error downloading packages: qt3-3.3.8b-51.el7.x86_64: [Errno 256] No more mirrors to try._no presto metadata available for base-程序员宅基地

文章浏览阅读7.6k次。Error downloading packages: qt3-3.3.8b-51.el7.x86_64: [Errno 256] No more mirrors to try. 1:qt-x11-4.8.7-2.el7.x86_64: [Errno 256] No more mirrors to try. 解决办法_no presto metadata available for base

matlab cell2mat 函数将元胞转换成数值矩阵出错_m{n} = cat(1,c{:,n});-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏19次。matlab cell2mat 函数将元胞转换成数值矩阵出错matlab 中经常涉及到各种数据类型的转换。在将元胞型转换成数值矩阵的过程中我遇到了一个非常有趣的问题,代码如下:% 元胞型转换为数值型矩阵close allclearclc% 这个data中的price是从excel中读取的数据并做在matlab中做了一定转换处理load data% 生成元胞型矩阵,m1整数型,m2浮..._m{n} = cat(1,c{:,n});

推荐文章

热门文章

相关标签