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算啥呢。害。