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. PyQt(Python+Qt)学习随笔:QTreeWidget中标题相关属性访问方法headerItem、setHeaderLabels

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件窗口可以有一个标题头,其中包含部件中每个列的节(即标题).QTreeWidget的标题属性包 ...

  2. PHP代码审计分段讲解(5)

    11 sql闭合绕过 源代码为 <?php if($_POST[user] && $_POST[pass]) { $conn = mysql_connect("**** ...

  3. flask中的重定向,渲染,反转视图函数

    在学习flask中,重定向,渲染,反转老是不怎么明白,今天明白了其中的点了,来给大家分享下 rend_templete()这个函数就是一个渲染的作用,渲染html的东西. url_for是反转视图函数 ...

  4. WC.exe(基于Java实现)

    一.github地址 https://github.com/Mazin-hub/MyWC.exe.git  二.PSP表格 PSP2.1 Personal Software Process Stage ...

  5. 20分钟带你掌握JavaScript Promise和 Async/Await

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/learn-promise-a ...

  6. MVC部署出现403.14问题记录

    1.问题截图 2.解决办法有几种 1)在system.webServer下增加,这种是不推荐的. <modules runAllManagedModulesForAllRequests=&quo ...

  7. ado.net使用sqlparameter的方式

    使用sqlparameter的方式,最终执行的sql语句 exec sp_executesql N'select top 1 ID,ZhangHu,MiMa,RID,ShiJian,EndTime,I ...

  8. Tensorflow学习笔记No.11

    图像定位 图像定位是指在图像中将我们需要识别的部分使用定位框进行定位标记,本次主要讲述如何使用tensorflow2.0实现简单的图像定位任务. 我所使用的定位方法是训练神经网络使它输出定位框的四个顶 ...

  9. ACL 的功能、匹配原则、端口号类别

    功能 1)限制网络流量.提高网络性能.例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理. 2)提供对通信流量的控制手段. 3)提供网络访问的基本安 ...

  10. 自顶向下redis4.0(5)持久化

    redis4.0的持久化 目录 redis4.0的持久化 简介 正文 rdb持久化 save命令 bgsave命令 rdb定期保存数据 进程结束保存数据 aof持久化 数据缓冲区 刷新数据到磁盘 ap ...