SpringBoot全局异常捕获

使用到的技能

@RestControllerAdvice或(@ControllerAdvice+@ResponseBody)

@ExceptionHandler

代码实现

统一返回入口

自定义异常

全局异常处理

统一返回入口Result

/**

  • @ClassName Result

  • @Description 统一返回格式

  • @Author chaoba

  • @Version V1.0

    */

    @Data

    public class Result {

    private int code;

    private String msg;

    private T data;

    /**

    • 成功时候的调用

      */

      public static Result success(T data) {

      Result result = new Result(CodeMsg.SUCCESS);

      result.setData(data);

      return result;

      }

    /**

    • 成功时候的调用

      */

      public static Result successMsg(String msg) {

      return new Result(200, msg);

      }

    /**

    • 失败时候的调用

      */

      public static Result errorCodeMsg(CodeMsg codeMsg) {

      return new Result(codeMsg);

      }

    /**

    • 成功时候的调用

      */

      public static Result successCodeMsg(CodeMsg codeMsg) {

      return new Result(codeMsg);

      }

    public static Result error(T data) {

    Result result = new Result(CodeMsg.FAIL);

    result.setData(data);

    return result;

    }

    /**

    • 失败时候的调用

      */

      public static Result errorMsg(String msg) {

      return new Result(0, msg);

      }

    /**

    • 全部参数
    • @param
    • @param
    • @return

      */

      public static Result getResult() {

      return new Result();

      }

    public static Result toAjaxResult(int rows) {

    return rows > 0 ? success(null) : error(null);

    }

    public static Result toAjaxResult(boolean rows) {

    return rows ? success(null) : error(null);

    }

    private Result(T data) {

    this.data = data;

    }

    private Result() {

    }

    private Result(int code, String msg) {

    this.code = code;

    this.msg = msg;

    }

    private Result(CodeMsg codeMsg) {

    if (codeMsg != null) {

    this.code = codeMsg.getCode();

    this.msg = codeMsg.getMsg();

    }

    }

}

自定义异常

/**

  • @ClassName GlabalException

  • @Description 全局异常

  • @Author chaoba

  • @Version V1.0

    */

    @Data

    public class GlabalException extends RuntimeException {

    //错误状态码

    private int code;

    public GlabalException(int code) {

    this.code = code;

    }

    public GlabalException(String message, int code) {

    super(message);

    this.code = code;

    }

    public GlabalException(CodeMsg codeMsg) {

    super(codeMsg.getMsg());

    this.code = codeMsg.getCode();

    }

    public GlabalException(String message) {

    super(message);

    }

    public GlabalException(Throwable cause, int code) {

    super(cause);

    this.code = code;

    }

    public GlabalException(GlabalException ex) {

    super(ex);

    }

    }

    全局异常处理

    /**

  • @ClassName GlabalExceptionHandler

  • @Description 全局异常拦截,只提供接口-无需页面404等错误

  • @Author chaoba

  • @Version V1.0

    */

    @RestControllerAdvice

    public class GlabalExceptionHandler {

    //拦截自定义异常

    @ExceptionHandler(value = GlabalException.class)

    public Result jsonErrorHandler(GlabalException e) {

    Result

}

本文作者: 暮雪超霸

本文链接:https://www.cnblogs.com/chaoba/p/14204069.html

SpringBoot全局异常拦截的更多相关文章

  1. springboot全局异常拦截源码解读

    在springboot中我们可以通过注解@ControllerAdvice来声明一个异常拦截类,通过@ExceptionHandler获取拦截类抛出来的具体异常类,我们可以通过阅读源码并debug去解 ...

  2. SpringBoot 全局异常拦截捕获处理

    一.全局异常处理 //Result定义全局数据返回对象 package com.xiaobing.demo001.domain; public class Result { private Integ ...

  3. Asp.Netcore使用Filter来实现接口的全局异常拦截,以及前置拦截和后置拦截

    原文链接:https://blog.csdn.net/qq_38762313/article/details/85234594 全局异常拦截器:       解决写每个接口都需要去做容错而添加try{ ...

  4. Spring 全局异常拦截根据业务返回不同格式数据 自定义异常

    1.全局异常拦截:针对所有异常进行拦截 可根据请求自定义返回格式 2.自定义异常类 处理不同业务的异常 接下来开始入手代码: 1).自定义异常类 @ControllerAdvice//添加注解 记得开 ...

  5. springboot 全局异常捕获,异常流处理业务逻辑

    前言 上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的.参数异常springboot默认的返回结构: { "timestamp": ...

  6. @ControllerAdvice全局异常拦截

    @ControllerAdvice 拦截异常并统一处理 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder ...

  7. SpringBoot 全局异常配置

    在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示. 一.默认异常机制 默认异常处理(SpringBoot 默认提供了两种机制,一种是针对于web浏览器访问的 ...

  8. Spring Cloud Gateway之全局异常拦截器

    /** * @version 2019/8/14 * @description: 异常拦截器 * @modified: */ @Slf4j public class JsonExceptionHand ...

  9. springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler

    前言 本文讲解使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理,可以处理大部分开发中用到的自自定义业务异常处理了,再也不用 ...

随机推荐

  1. 冰河开源了全网首个完全开源的分布式全局有序序列号(分布式ID)框架!!

    写在前面 mykit-serial框架的设计参考了李艳鹏大佬开源的vesta框架,并彻底重构了vesta框架,借鉴了雪花算法(SnowFlake)的思想,并在此基础上进行了全面升级和优化.支持嵌入式( ...

  2. PyQt(Python+Qt)学习随笔:QDockWidget停靠部件的setWidget和widget方法

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QDockWidget对象由一个标题栏和内容区域组成.QDockWid ...

  3. PostMan设置环境变量&全局变量

    一.设置环境变量 1.点击右上角Manage Environment,进入环境变量设置界面 2.定义环境名称,参数名及参数值 3.将接口地址中服务器地址进行参数化,并选择对应的环境执行 二.设置全局变 ...

  4. java中的反射(三)

    目录 一.反射 1.class类 2.访问字段 3.调用方法 4.调用构造方法 5.获取继承对象 6.动态代理 二.sping中的反射 本篇转自:https://depp.wang/2020/05/0 ...

  5. selenium 淘宝商品分页

    通过这行代码确定每页的下一页,因为从淘宝的第4页 xpath就匹配不出下一页的位置#这是面向对象写法,不用的把self. 去掉即可next_button = self.driver.find_elem ...

  6. Panda Global 要点聚焦,区块链在数字医疗的落地应

    据Panda Global,随着区块链技术影响力的不断扩大,其应用性已涉及更加广泛的领域,不断更新着人们的认知.在区块链技术未介入之前,关于医疗行业和数字经济结合早已不是什么新鲜话题,相关研究不少 但 ...

  7. 学习笔记:Link Cut Tree

    模板题 原理 类似树链剖分对重儿子/长儿子剖分,Link Cut Tree 也做的是类似的链剖分. 每个节点选出 \(0 / 1\) 个儿子作为实儿子,剩下是虚儿子.对应的边是实边/虚边,虚实时可以进 ...

  8. Java并发编程的艺术(一)——并发编程的注意问题

    并发编程是为了使程序运行得更快,但是,不是启动更多得线程就能最大限度地执行并发,也不是线程更多就能使得程序运行得更快,而且并发编程更容易产生错误,如果要高效且正确地执行并发,就需要注意这三种问题 上下 ...

  9. STL——容器(Map & multimap)的插入与迭代器

    1. 容器(Map & multimap)的插入 map.insert(...);    //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...

  10. Mac下安装appium+python+Android sdk 环境完整流程

    安装大纲:1,安装jdk (jdk1.8及以上版本都可以,尽量不要用最新可能会不兼容) 2,安装android-sdk (mac版本的android-sdk) 3,mumu模拟器 (随便找的一个) 4 ...