在openfeign客户端如何获取到服务端抛出的准确异常信息?? openfeign调用(请求/响应)的各个大致过程

本文详细介绍了在OpenFeign客户端中如何处理服务端抛出的异常,包括通过response获取异常信息、自定义异常处理、response拦截器以及使用ErrorDecoder和fallbackFactory来获取和呈现异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关参考

  1. openfeign客户端A调用服务B,服务B抛出异常时,客户端A接收的几种情况

  2. openfeign集成sentinel实现服务降级

  3. OpenFeign客户端调用,服务端查询结果为null并返回给feign客户端,引发客户端报错

  4. openfeign客户端调用远程服务端接口,传递参数为null及服务端接口返回值为null的情况

背景引入

浏览器直接访问Spring的Restful接口(最普遍、简单的访问)

示例

直接在controller层抛出一个异常:观察浏览器接收到的准确信息是什么 ?

Controller代码如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class ClassForTest {
   
	Logger logger = LoggerFactory.getLogger(this.getClass());
	@GetMapping("/ex/handler")
	public String testExceptionHandler() throws Exception {
   
		throw new Exception("抛出了异常哈。。。");
//		int x = 3/0;
//		return "nothing";
	}
}

浏览器返回:
在这里插入图片描述
上图的返回信息是SpringMVC默认处理方式,如果服务端抛出了异常默认就会返回上述信息!

那么,如何获取到自己想要的或者服务端返回的真实异常信息!!

编写自定义异常处理即可获取到想要的真实异常信息,如下:

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class CustomExceptionHandler {
   
	
	/**
	 * 全局异常处理
	 * @param e
	 * @param response
	 * @return
	 */
    @ExceptionHandler(value =Exception.class)
    @ResponseBody
	public TestEntity myExHandler(Exception e,HttpServletResponse response) {
   
    	TestEntity te = new TestEntity();
    	te.setName("sf solo!");
    	te.setAge(18);
    	te.setErrorCode("500");
    	te.setErrorMsg(e.getMessage());
		return te;
	}
}

上述代码中TestEntity为自定义返回实体

import lombok.Data;
@Data
public class TestEntity {
   
	Integer age = 10;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值