zoukankan      html  css  js  c++  java
  • Springboot集成自定义异常类(企业实战)

    一说明

    1. 会使用枚举
    2. 熟悉面向切面编程思想
    3. 熟悉枚举
    4. 熟悉异常
    5. 了解springboot基本知识
    6. 熟悉基本项目搭建,在演示文档中省略该步骤
    7. springboot 2.0 , jdk1.8,构建工具idea

    二 自定义异常类

    作者只能说简洁明了直接撸代码。

    2.1 在pom文件中引入相关依赖

     <dependencies>
            <!-- web启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    

    2.2 使用枚举自定义异常类消息

    /*
     * @Author lsc
     * @Description  <p>异常消息 </p>
     * @Date 2019/10/9 20:28
     * @Param
     * @return
     **/
    @AllArgsConstructor//全参构造
    @NoArgsConstructor//空参构造
    public enum CodeMsg {
    
        SUCESS(200,"sucess"),
        SERVER_ERROR(500,"服务端异常"),
        Request_Error(404,"请求异常");
    
        // 错误消息码
        private Integer code;
        // 错误消息提示
        private String msg;
    
        public Integer getCode() {
            return code;
        }
    
        public void setCode(Integer code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    }
    
    

    2.3使用自定义异常集成RuntimeException

    /**
     * @Author lsc
     * @Description <p>自定义通用异常 </p>
     * @Date 2019/10/9 20:39
     * @Version 1.0
     */
    
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    public class CommonException extends RuntimeException {
    
        // 序列化号
        private static final long serialVersionUID = 132719492019L;
    
        // 引入自定义异常消息
        private CodeMsg codeMsg;
    
    
    }
    

    2.4 编写页面返回实体类

    /**
     * @Author lsc
     * @Description <p> 返回的页面 </p>
     * @Date 2019/10/9 20:35
     * @Version 1.0
     */
    
    @Data//set get 等方法
    @AllArgsConstructor
    @NoArgsConstructor
    public class ResultPage<T> {
    
    
        // 状态码
        private Integer code;
        // 消息提示
        private String msg;
        // 存放的数据
        private T data;
    
    
        ResultPage(Integer code,String msg) {
            this.code=code;
            this.msg=msg;
            this.data=data;
        }
    
        // 成功的时候调用
        public static <T> ResultPage<T> sucess(CodeMsg codeMsg,T data){
            return new ResultPage<T>(codeMsg.getCode(),codeMsg.getMsg(),data);
        }
    
        //失败的时候调用
        public static <T> ResultPage<T> error(CodeMsg codeMsg){
            return new ResultPage<T>(codeMsg.getCode(),codeMsg.getMsg());
        }
    }
    
    

    2.5异常捕获

    /*
     * @Author lsc
     * @Description  <p> 异常捕获</p>
     * @Date 2019/10/9 20:42
     * @Param
     * @return
     **/
    @ControllerAdvice
    @Configuration
    public class CommonExceptionHandler {
    
    
        // 捕获CommonException异常
        @ExceptionHandler(value = CommonException.class)
        @ResponseBody
        public ResponseEntity<ResultPage> CommonExceptionHandler(CommonException e){
            // 获得异常消息
            CodeMsg codeMsg = e.getCodeMsg();
            // 设置错误消息页面返回
            return ResponseEntity.status(HttpStatus.OK).body(ResultPage.error(codeMsg));
        }
    
        // 下面还可以自定义捕获其他异常比如 非法参数异常 运算异常 等等.......
    
    }
    
    

    2.6 controller层

    /**
     * @Author lsc
     * @Description <p> 控制层</p>
     * @Date 2019/10/9 20:57
     * @Version 1.0
     */
    @RestController
    public class YouKu1327Controller {
    
    
        @GetMapping("/youku1327/api/excetion")
        public ResultPage<Object> testException(){
            // 示范 抛出自定义异常
            throw new CommonException(CodeMsg.Request_Error);
        }
        /*
         * @Author lsc
         * @Description  <p>成功消息 </p>
         * @Date 2019/10/9 21:21
         * @Param []
         * @return org.springframework.http.ResponseEntity
         **/
        @GetMapping("/youku1327/api/sucess")
        public ResponseEntity testSucess(){
            ArrayList<Object> list = new ArrayList<>();
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("youku1327","欢迎关注博客和微信号");
            list.add(hashMap);
            return ResponseEntity.ok().body(ResultPage.sucess(CodeMsg.SUCESS,list));
        }
    }
    

    2.7 启动类

    /**
     * @Author lsc
     * @Description <p> 自定义异常启动类</p>
     * @Date 2019/10/9 20:56
     * @Version 1.0
     */
    @SpringBootApplication
    public class ExceptionApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ExceptionApplication.class,args);
        }
    }
    

    三启动项目页面请求测试

    3.1 测试异常
    在这里插入图片描述

    3.2测试成功

    在这里插入图片描述

  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/zszxz/p/12089818.html
Copyright © 2011-2022 走看看