ABP 微服务下的异常处理机制如何关闭

关注了ABP一段时间,并且也有一些内部项目基于ABP的架构落地,近期有一个项目需要使用微服务架构,所以就研究了ABP的microservice demo,进行了本地部署。项目本身是一个业务/数据中台的定位,需要提供很多服务API,在做各个服务的API返回值处理的时候发现,如果调用ABP封装好的module,且module里抛异常出来,则会直接走ABP自带的返回值(把异常结果进行封装)并作为这次http请求的结果,但这样的返回值格式不是我们的规范,所以就想办法去自定义,由于ABP VNEXT版本比较新,所以一些特性还没有在新版本中迭代,比如DontWarpResult这个属性。

奈何项目时间短,任务重,就采取了比较不友好的方式来解决。

ABP 都是基于AbpExceptionFilter来截取所有exception,那么我们就重新定义了一个自己的exceptionFilter,如下:

 

 然后将此filter 注入到程序中,如下:

 

 此时还需要将原有的AbpExceptionFilter进行移除,如下:

 

 至此,所有的异常都不再走AbpExceptionFilter进行封装,则会直接跳入我们自己的异常处理机制,进行返回值的设计和返回 来满足我们的接口规范。

posted @ 2020-04-15 09:29  psycheeeee  阅读(440)  评论(0编辑  收藏  举报