FeignClient 抛出异常时怎么拿到返回值?

第一种情况

最先调用的服务接口报错,返回统一异常处理的json,结果feign是转换的类型错误。都没有打印json内容。

 

第二种情况

各种查找资料,最后发现服务返回的状态码不是200,就不会进入到Feign的默认ErrorDecoder

调整被调用服务的全局异常

添加如下代码

ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
response.setStatus(500);

 

代用服务异常信息打印

 稍微舒服点,至少吧服务返回的json打印了。

第三种情况

自定义openfeign异常处理

@Slf4j
public class CustomErrorDecoder implements ErrorDecoder {
    @Override
    public Exception decode(String s, Response response) {
        Exception exception;
        try {
            String json = Util.toString(response.body().asReader(StandardCharsets.UTF_8));
            //自定义处理
            exception = new RuntimeException(json);
        } catch (IOException ex) {
            log.error(ex.getMessage(), ex);
            exception = new RuntimeException("解析异常");
        }
        return exception;
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值