FeignException 捕获

 

背景

1、使用feign调用第三方接口,响应的数据结构不太规范,也很容易返回500,即使是参数错误也是返回500的,所以必须要捕获异常

2、开始时,使用 catch BusinessException (BusinessException是封装的异常类,extend RuntimeException),但发现并没有捕获到。

3、但不太想直接使用 catch Exception, (但还是用 catch Exception)看了一下,是catch到了一个 FeignException

4、再看一下这个 FeignException, 它是 extend RuntimeException 的。它和BusinessException 一样都是继承RuntimeException的,所以是捕获不到了(捕获父类可以,但因为子类是不同的,所以子类是识别不到的)

5、知道是 FeignException, 于是 catch FeignException 就可以了

 

结论:

一些第三方接口,如果不规范的话,一定要catch 掉异常。feign的话,就要 catch 掉 FeignException。

 

但还是希望按规范返回接口,比如如果参数不对,也应该是返回400才对,直接给个500算啥呢。害。

posted @ 2022-05-24 09:58  aaacarrot  阅读(1396)  评论(0编辑  收藏  举报