美文网首页
SpringBoot之自定义异常处理

SpringBoot之自定义异常处理

作者: 久伴我还是酒伴我 | 来源:发表于2021-06-24 17:47 被阅读0次

    简介

    SpringBoot项目进行全局异常的处理是非常有必要的,不仅处理异常方便,而且可以优化代码,是针对我们系统中的异常,给予一定规范的处理结果。

    自定义异常类

    package com.yutian.machine.cat.base.exception;
    
    
    import com.yutian.machine.cat.enums.SystemStatusEnums;
    import lombok.Data;
    
    @Data
    public class YTException extends RuntimeException {
    
        /**
         * 返回结果代码
         */
        private String resultCode = "200";
    
        /**
         * 结果描述
         */
        private String resultMsg = "调用成功";
    
        /**
         * 请求流水号
         */
        private String requestNum;
    
        public YTException() {
        }
    
        /**
         * 初始化异常信息
         *
         * @param systemStatusEnums
         *
         * @return
         */
        public YTException(SystemStatusEnums systemStatusEnums) {
            super(systemStatusEnums.getMessage());
            this.resultCode = systemStatusEnums.getCode();
            this.resultMsg = systemStatusEnums.getMessage();
        }
    
    
        /**
         * 返回 动态结果 code + msg
         * @param msg  结果
         */
        public YTException(String code, String msg) {
            super(msg);
            this.resultCode = code;
            this.resultMsg = msg;
        }
    
    }
    
    

    自定义返回类

    package com.yutian.machine.cat.base.response;
    
    import com.yutian.machine.cat.enums.SystemStatusEnums;
    import lombok.Data;
    
    import java.io.Serializable;
    
    /**
     * @description: 业务信息结果返回对象
     * @author: gaoleijie
     * @create: 2020-01-06 17:47
     **/
    @Data
    public class YTBizResponse<T> implements Serializable {
    
        /**
         * 结果代码
         */
        private String code = SystemStatusEnums.BASE_RESPONSE_SUCCESS.getCode();
        /**
         * 结果描述
         */
        private String msg = SystemStatusEnums.BASE_RESPONSE_SUCCESS.getMessage();
        /**
         * 结果体
         */
        private T data;
    
        public boolean isOk() {
            return SystemStatusEnums.BASE_RESPONSE_SUCCESS.getCode().equals(this.code);
        }
    
    
        public static <T> YTBizResponse<T> newInstance(T data) {
            YTBizResponse invoiceBaseResponse = new YTBizResponse();
            invoiceBaseResponse.setData(data);
            return invoiceBaseResponse;
        }
    
    
        /**
         * 初始化异常信息
         *
         * @param code
         * @param resultMsg
         * @param <T>
         * @return
         */
        public static <T> YTBizResponse<T> newException(String code, String resultMsg) {
            YTBizResponse<T> invoiceBaseResponse = new YTBizResponse();
            invoiceBaseResponse.setCode(code);
            invoiceBaseResponse.setMsg(resultMsg);
            return invoiceBaseResponse;
        }
    
        /**
         * 初始化异常信息
         *
         * @param enums
         * @param <T>
         * @return
         */
        public static <T> YTBizResponse<T> newException(SystemStatusEnums enums) {
            YTBizResponse<T> invoiceBaseResponse = new YTBizResponse();
            invoiceBaseResponse.setCode(enums.getCode());
            invoiceBaseResponse.setMsg(enums.getMessage());
            return invoiceBaseResponse;
        }
    }
    

    异常统一处理类

    package com.yutian.machine.cat.base.exception;
    
    import com.yutian.machine.cat.base.response.YTBizResponse;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * @author leijie.gao
     * @version 1.0.0
     * @ClassName GlobalExceptionHandler.java
     * @Description TODO
     * @createTime 2021年06月24日 17:27:00
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        /**
         * 自定义异常
         * @param e
         * @return
         */
        @ExceptionHandler(value = YTException.class)
        @ResponseBody
        public YTBizResponse exceptionHandler(YTException e){
            return YTBizResponse.newException(e.getResultCode(),e.getResultMsg());
        }
    }
    
    

    结束语

    异常统一处理,或许我们看起来实现非常简单,然而,其他它包含的思想却是一种大局思想,这是我们开发人员在开发过程中都应该关注的点,我们并不是只需要关注我们每个人开发的那点任务,而要以一种全局的角度去审视整个项目,这样也能够提升我们开问题的高度。

    相关文章

      网友评论

          本文标题:SpringBoot之自定义异常处理

          本文链接:https://www.haomeiwen.com/subject/lwkgyltx.html