• 010 @ControllerAdvice


    一:说明

    1.说明

      这个注解是用于写一个异常捕获的处理类。

      这里介绍全局捕获异常,自定义异常捕获

    2.ps

      在这里,顺便写一下基础的自定义异常类,以后方便用于业务异常继承

    二:全局异常捕获

    1.处理类

    package com.jun.web.exception;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @ControllerAdvice
    @ResponseBody
    public class GlobalExceptionAdviceHandle {
        /**
         * 全局异常捕获
         * @param ex
         * @return
         */
        @ExceptionHandler(value = Exception.class)
        public Map<String, Object> errorHandle(Exception ex){
            Map<String, Object> map = new HashMap<>();
            map.put("code","-1");
            map.put("msg", ex.getMessage());
            return map;
        }
    
    
    }

    2.controller控制类

    package com.jun.web.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 验证异常捕获注解
     */
    @RestController
    public class MakeErrorController {
        @GetMapping("/global")
        public String calc(){
            int num=3/0;
            return "success";
        }
    }

    3.访问

      

    三:自定义异常

    1.异常基础类

     1 package com.jun.web.exception;
     2 
     3 import lombok.Data;
     4 
     5 /**
     6  * 基础异常类
     7  */
     8 @Data
     9 public class BaseException extends RuntimeException{
    10     //异常码
    11     private String code;
    12     private String msg;
    13     BaseException(){}
    14     public BaseException(String code, String msg){
    15         this.code=code;
    16         this.msg=msg;
    17     }
    18 }

    2.自定义异常处理类

     1 package com.jun.web.exception;
     2 
     3 import org.springframework.web.bind.annotation.ControllerAdvice;
     4 import org.springframework.web.bind.annotation.ExceptionHandler;
     5 import org.springframework.web.bind.annotation.ResponseBody;
     6 
     7 import java.util.HashMap;
     8 import java.util.Map;
     9 
    10 @ControllerAdvice
    11 @ResponseBody
    12 public class GlobalExceptionAdviceHandle {
    13     /**
    14      * 全局异常捕获
    15      * @param ex
    16      * @return
    17      */
    18     @ExceptionHandler(value = Exception.class)
    19     public Map<String, Object> errorHandle(Exception ex){
    20         Map<String, Object> map = new HashMap<>();
    21         map.put("code","-1");
    22         map.put("msg", ex.getMessage());
    23         return map;
    24     }
    25 
    26     /**
    27      * 针对BaseException的异常捕获
    28      * @param ex
    29      * @return
    30      */
    31     @ExceptionHandler(value = BaseException.class)
    32     public Map<String, Object> errorHandle(BaseException ex){
    33         Map<String, Object> map = new HashMap<>();
    34         map.put("code",ex.getCode());
    35         map.put("msg", ex.getMsg());
    36         return map;
    37     }
    38 }

    3.测试

    package com.jun.web.controller;
    
    import com.jun.web.exception.BaseException;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 验证异常捕获注解
     */
    @RestController
    public class MakeErrorController {
        @GetMapping("/global")
        public String calc(){
            int num=3/0;
            return "success";
        }
    
        @GetMapping("/global/err")
        public String throwErr(){
            throw new BaseException("20000","普通的错误");
        }
    }

    4.结果

      

  • 相关阅读:
    jquery源码解读 (摘自jQuery源码分析系列图书(pdf)) 持续更新
    jquery源码学习
    判断浏览器是ie9座特殊处理
    js继承
    引入flash
    IE7下面踩得坑
    导航栏对应相应的模块,可点击索引和滚动索引到需要到达的位置
    java的eclipse的使用
    弹窗在大屏上居中对齐,在小屏上被挡住解决方案
    左侧菜单栏,有对个li对应一个content
  • 原文地址:https://www.cnblogs.com/juncaoit/p/11395842.html
Copyright © 2020-2023  润新知