Spring Boot FeignClient 捕获异常信息

FeignClient 默认的解析器:

public static FeignException errorStatus(String methodKey, Response response) {
  // 这里做了处理
  String message = format("status %s reading %s", response.status(), methodKey);
  try {
    if (response.body() != null) {
      String body = Util.toString(response.body().asReader());
      message += "; content:\n" + body;
    }
  } catch (IOException ignored) { // NOPMD
  }
  return new FeignException(response.status(), message);
}

截获的异常如下:

status 400 reading PaymentInterface#methodName(ParamType,ParamType);

content: {"type":"http://httpstatus.es/404","title":"未找到资源","status":400,"detail":"这里是详细的异常信息"}  -> 

cz.jirutka.spring.exhandler.messages.ErrorMessage

自定义解析器:

@Configuration
public class FeignErrorDecoder implements ErrorDecoder {

    @Override
    public Exception decode(String methodKey, Response response) {
        try {
            // 这里直接拿到我们抛出的异常信息
            String message = Util.toString(response.body().asReader());
            return new RuntimeException(message);
        } catch (IOException ignored) {
        }
        return decode(methodKey, response);
    }
}

异常信息如下:

{type: "http://httpstatus.es/404",title: "未找到资源",status: 400,detail: "这里是详细的异常信息"}

此时就能得到我们的Rest风格的Exception了

转载于:https://my.oschina.net/u/3757402/blog/1609297

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值