springboot统一异常处理

异常注解介绍:

@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody

@ExceptionHandler(value=Exception.class //捕获全局异常,处理所有不可知的异常

  1. 创建一个自定义异常
/**
 * 自定义异常
 */
public class MyException extends Exception{
    public MyException(String message){
        super(message);
    }
}

  1. 在TestController中增加测试异常的映射,抛出MyException异常
 
 /**
     * 异常测试接口
     * @return
     * @throws MyException
     */
    @RequestMapping("/testException")
    public String testException() throws MyException {
        System.out.println("测试异常");
        throw new MyException("我的异常");

    }


  1. 创建一个全局处理异常的类

    @ControllerAdvice定义全局异常处理类
    @ExceptionHandler指定自定义错误处理方法拦截的异常类型
    @ResponseBody返回JSON类型的数据
    /**
     * 处理异常类
     * @ControllerAdvice 注解定义全局异常处理类
     *
     * @ExceptionHandler 指定自定义错误处理方法拦截的异常类型
     *
     * @ResponseBody 指返回JSON类型的数据
     */
    @ControllerAdvice
    public class GlobalMyExceptionHandler {
    
        @ExceptionHandler(value = Exception.class)
        @ResponseBody
        public Object handlerException(HttpServletRequest request, MyException e) {
    
            Map<String, Object> map = new HashMap<>();
            map.put("code", -1);
            map.put("msg", e.getMessage());
            map.put("url", request.getRequestURI());
            return map;
        }
    }
    
posted @ 2020-04-29 19:03  我有满天星辰  阅读(13)  评论(0编辑  收藏  举报