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. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...

  2. CQUT校园通知网消息爬虫+Server酱微信推送

    上了大三之后发现很多学校的通知都不会发送到班群里面,导致自己会错过很多重要信息,故想写一个爬虫来获取从当前时间之后的新的通知标题,并推送到微信上. PS:推送到微信上这个想法来源是,很多时候都需要将消 ...

  3. Hive 安装 & Mysql 安装

    安装Hive && mysql (1)安装Hive Hive安装所需要的依赖(安装Hive前必须先安装jdk.hadoop) 1)jdk1.6以上 2)Hadoop要启动 未安装jdk ...

  4. 支持“EFDBContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库

    在修改数据库表后会出现 支持"EFDBContext"上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库 这个问题解决方法: 在Global.a ...

  5. Day6 Scrum 冲刺博客

    一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图  团队成员 昨日完成工作  今日工作计划 遇到的困难  周梓波  将方块旋转变形  添加键盘监听事件  不熟悉监听事件的操作  纪昂学  左右 ...

  6. 手把手教你写DI_1_DI框架有什么?

    DI框架有什么? 在上一节:手把手教你写DI_0_DI是什么? 我们已经理解DI是什么 接下来我们就徒手撸一撸,玩个支持构造函数注入的DI出来 首先我们回顾一下 构造函数注入 的代码形式, 大概长这模 ...

  7. OI学习过程记录

    这帖子本来是教练为了给低年级学生分享经验而让我写的学习经历,不过等我退役之后可能就变成回忆录了. 初三 WC 前:上了正睿的线上课程,练了一些模拟赛,同时也正在学文化课. 然后,莫名奇妙1膜考了全校前 ...

  8. 题解-洛谷P5217 贫穷

    洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\te ...

  9. 编译opencv4.5.0

    1. 环境vs2017或其它版本cmake-3.18设置环境变量OPENCV_TEST_DATA_PATH 值设置为 D:\sdk\vs2017\opencv-4.5.0\opencv_extra-4 ...

  10. MySQL全备及备份文件删除脚本

    1.数据库全备 #!/bin/shv_user="root"v_password="mysql"backup_date=`date +%Y%m%d%H%M` M ...