zoukankan      html  css  js  c++  java
  • springboot 自定义异常

    生名一个异常类:

    比如用户登录授权异常类:

    /**
     * 自定义业务异常对象
     */
    public class AuthorizationException extends RuntimeException {
    
        /**
         * @Fields serialVersionUID : TODO
         */
        private static final long serialVersionUID = 1L;
    
        private int code;
    
        private Object data;
    
        /*
         * 默认异常
         */
        public AuthorizationException() {
            this(200,"请求成功");
        }
    
        public AuthorizationException(int code, String msg) {
            super(msg);
            this.code = code;
        }
    
        public AuthorizationException(int code, String msg, Object data) {
            super(msg);
            this.code = code;
            this.data = data;
        }
    
        public AuthorizationException(String message) {
            super(message);
            code = 420;
        }
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
        
    }

    声明一个全局异常处理类:RestControllerAdvice.java

    /**
     * 全局异常处理类,处理系统内所有异常,并给客户端相关的响应.
     */
    @ControllerAdvice
    public class RestControllerAdvice {
    
        private static final Logger logger = LoggerFactory.getLogger(RestControllerAdvice.class);
    
        @ExceptionHandler(AuthorizationException.class)
        @ResponseBody
        public JsonResponse<?> handleBusinessException(AuthorizationException ex, HttpServletResponse response) {
            logger.error(ex.getMessage(),ex);
            return new JsonResponse<>(ex.getCode(),ex.getMessage(), ex.getData());
        }
        
    }

    JsonResponse.java
    @Data
    public class JsonResponse<T> {
    
        Integer code;
    
        String message;
        
        T data;
        
    
        public JsonResponse(Integer code, String message) {
            this.code = code;
            this.message = message;
        }
        
        public JsonResponse(Integer code, T data) {
            this.code = code;
            this.data = data;
        }
    
        public JsonResponse(Integer code, String message, T data) {
            this.code = code;
            this.message = message;
            this.data = data;
        }
    }

    在业务层抛出 刚才声明的AuthorizationException异常:


    @RequestMapping("/test")
    public
    Boolean test(){throw new AuthorizationException(401, "未登录"); }

    这样就完成啦
  • 相关阅读:
    layui table中使用checkbox
    layui 工具条实现分页
    layui 文件上传加进度条
    js验证文本框数字
    Oracle 锁表
    IIS部署新网站
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
    VS问题
    利用ADO让普通人用excel读取oracle数据库表的通用办法
    Spring概念
  • 原文地址:https://www.cnblogs.com/wanjun-top/p/12974142.html
Copyright © 2011-2022 走看看