• Springboot 全局异常、返回实体配置


    1、返回实体对象的创建

    首先,一个项目中为了清晰、统一的处理返回信息,所以需要封装一个返回对象,这个对象需要有响应code码、响应code码对应的描述信息、以及返回数据对象。下面我们来看一下具体代码:

    public class ApiResult implements Serializable {
    	/**
    	 * 响应码
    	 */
    	private String resultCode;
    
    	/**
    	 * 响应描述
    	 */
    	public String msg;
    
    	/**
    	 * 返回数据对象
    	 */
    	public Map<String, Object> data = new HashMap<>();
    	public ApiResult() {
    		this.resultCode = ApiResponse.SUCCESS.getResCode();
    		this.msg = ApiResponse.SUCCESS.getResDesc();
    	}
    	public ApiResult(Map<String, Object> data) {
    		this.resultCode = ApiResponse.SUCCESS.getResCode();
    		this.msg = ApiResponse.SUCCESS.getResDesc();
    		this.data = data;
    	}
    
    	public ApiResult(ApiResponse resp, Map<String, Object> data) {
    		this.resultCode = resp.getResCode();
    		this.msg = resp.getResDesc();
    		this.data = data;
    	}
    
    	public ApiResult(ApiResponse resp, Map<String, Object> data, String msg) {
    		this.resultCode = resp.getResCode();
    		this.msg = msg;
    		this.data = data;
    	}
    
    }
    

    2、全局异常配置

    当出现异常情况时,要作为一个统一的异常类来处理相关信息。所以才会出现全局异常类配置。具体代码如下:

    public class BaseException extends Exception {
    
        /**
         * 响应完整信息
         *
         * */
        private ApiResponse response;
    
        public BaseException(Throwable cause) {
            super(cause);
        }
    
        public BaseException(String message) {
            super(message);
        }
    }
    

    3、全局异常配置完成后,则需要配置一个全局异常处理类

    异常类处理完成后,需要有一个异常处理类来完成对各种异常的统一处理,注解标记出了此类是一个Handler,然后下面的ExceptionHandler来捕获各种异常,我这里只捕获了自己定义的异常,如果有多种异常你可以每一个捕获,然后去自定义返回信息节课完成全局统一异常的处理信息。

    具体代码如下

    @RestControllerAdvice
    public class TyBusExceptionHandler {
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @ExceptionHandler(BaseException.class)
        @ResponseBody
        public ApiResult handle(BaseException e) {
            logger.error("错误信息是:{}", e);
            ApiResult resp = null;
            ApiResponse response = e.getResponse();
            if (response == null || StringUtils.isEmpty(response.getReturnMsg())) {
                resp = new ApiResult(e.getResponse(), null, e.getMessage());
            } else {
                resp = new ApiResult(e.getResponse(), null);
            }
            return resp;
        }
    }

    至此全局异常处理类及相关配置已完成

    更多编程内容,请扫码关注《coder练习生》,如果觉得有用,也可赠送作者一杯咖啡

     

  • 相关阅读:
    Seata入门系列【7】Seata之TCC模式入门案例
    Springboot 阻止XSS攻击
    图文解析 Nacos 配置中心的实现
    python15种3D绘图函数总结
    【SSL】用Certbot生成免费HTTPS证书
    大一新生HTML期末作业 个人网页王嘉尔明星介绍网页设计与制作
    『无为则无心』Python面向对象 — 54、重写和super()函数
    智能巡检系统有什么特点和功能?它是如何推动企业高效管理?
    关于OpenFeign 接口参数定义的问题
    Java进阶-异常处理
  • 原文地址:https://blog.csdn.net/ybb_ymm/article/details/125604245