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. python大数问题

    python不需要特殊的声明,可以直接进行大数运算 验证:

  2. 团队作业第六次——Beta冲刺

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 代码规范与计划 代码 ...

  3. 冲刺随笔——Day_Six

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  4. 少标签数据学习:宾夕法尼亚大学Learning with Few Labeled Data

    目录 Few-shot image classification Three regimes of image classification Problem formulation A flavor ...

  5. 解决 JPA 插入 MySQL 时间与实际时间差 13 个小时问题

    问题描述 公司使用的阿里云数据库服务器,插入时间与实际时间差 13 个小时 执行 show variables like "%time_zone%"; 结果如下: Variable ...

  6. WPF 学习笔记(一)

    一.概述 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,随着.NET Framework 3.0发布第一个版本.它提供了统一的 ...

  7. 第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码

    Python要访问一个网页并读取网页内容非常简单,在利用<第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头>的方法构建了请求http报文的请求头情况下,使 ...

  8. 树的直径,LCA复习笔记

    前言 复习笔记第6篇. 求直径的两种方法 树形DP: dfs(y); ans=max( ans,d[x]+d[y]+w[i] ); d[x]=max( d[x],d[y]+w[i] ); int di ...

  9. 【APIO2018】选圆圈(平面分块 | CDQ分治 | KDT)

    Description 给定平面上的 \(n\) 个圆,用三个参数 \((x, y, R)\) 表示圆心坐标和半径. 每次选取最大的一个尚未被删除的圆删除,并同时删除所有与其相切或相交的圆. 最后输出 ...

  10. deepstrem编译缺少gst/gst.h解决方案

    Deepstream在编译程序的程序的显示缺少gst/gst.h 具体情况是Deepstream运行已编译好的deepstream-app可以正常运行,但对源码编译的时候出现以述情况,初步分析是我们安 ...