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 @   我有满天星辰  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示