SpringBoot全局异常拦截
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全局异常拦截的更多相关文章
- springboot全局异常拦截源码解读
在springboot中我们可以通过注解@ControllerAdvice来声明一个异常拦截类,通过@ExceptionHandler获取拦截类抛出来的具体异常类,我们可以通过阅读源码并debug去解 ...
- SpringBoot 全局异常拦截捕获处理
一.全局异常处理 //Result定义全局数据返回对象 package com.xiaobing.demo001.domain; public class Result { private Integ ...
- Asp.Netcore使用Filter来实现接口的全局异常拦截,以及前置拦截和后置拦截
原文链接:https://blog.csdn.net/qq_38762313/article/details/85234594 全局异常拦截器: 解决写每个接口都需要去做容错而添加try{ ...
- Spring 全局异常拦截根据业务返回不同格式数据 自定义异常
1.全局异常拦截:针对所有异常进行拦截 可根据请求自定义返回格式 2.自定义异常类 处理不同业务的异常 接下来开始入手代码: 1).自定义异常类 @ControllerAdvice//添加注解 记得开 ...
- springboot 全局异常捕获,异常流处理业务逻辑
前言 上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的.参数异常springboot默认的返回结构: { "timestamp": ...
- @ControllerAdvice全局异常拦截
@ControllerAdvice 拦截异常并统一处理 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder ...
- SpringBoot 全局异常配置
在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示. 一.默认异常机制 默认异常处理(SpringBoot 默认提供了两种机制,一种是针对于web浏览器访问的 ...
- Spring Cloud Gateway之全局异常拦截器
/** * @version 2019/8/14 * @description: 异常拦截器 * @modified: */ @Slf4j public class JsonExceptionHand ...
- springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler
前言 本文讲解使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理,可以处理大部分开发中用到的自自定义业务异常处理了,再也不用 ...
随机推荐
- unittest框架中读取有特殊符号的配置文件内容的方法-configparser的RawConfigParser类应用
在搭建Unittest框架中,出现了一个问题,配置文件.ini中,出现了特殊字符如何处理? 通过 1.configparser的第三方库对应的ConfigParser类,无法完成对特殊字符的读取: # ...
- 跟我一起学Redis之Redis持久化必知必会
前言 Redis是出了名的速度快,那是因为在内存中进行数据存储和操作:如果仅仅是在内存中进行数据存储,那就会导致以下问题: 数据随进程退出而消失:当服务器断电或Redis Server进程退出时,内存 ...
- 详解Hadoop3.x新特性功能-HDFS纠删码
文章首发于微信公众号:五分钟学大数据 EC介绍 Erasure Coding 简称EC,中文名:纠删码 EC(纠删码)是一种编码技术,在HDFS之前,这种编码技术在廉价磁盘冗余阵列(RAID)中应用 ...
- 单调栈模板 POJ3250
上次二分st表大法失败以后的又一次尝试233333 封装,封装,封装!!!!!! #include <bits/stdc++.h> using namespace std; #define ...
- Python中倒转输入序列元素顺序的reversed函数
reversed函数将输入的序列的元素倒转后存储到一个类型为"reversed"可迭代对象,不能直接访问,可以转换为其他对象如列表或通过for循环方法访问. 注意:这里是倒转不是倒 ...
- 第3章 Python的数据类型目录
第3.1节 功能强大的 Python序列概述 第3.2节 Python列表简介 第3.3节 强大的Python列表 第3.4节 泛善可陈的元组 第3.5节 丰富的Python字典操作 第3.6节 Py ...
- PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型中的项以及索引
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 QStandardItemModel有两种构造方法: QStandardItemModel ...
- ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP默认的数据库是SQLServer,不过ABP框架底层是EF框架,因此也是很容易支持其他类型的数据库的,本篇随笔介绍在ABP框架使用Mysql数据库,以及基于SQLServer创建MySql数据库 ...
- Node.js 应用---定时给自己发送邮件
参照传智播客的视频所写代码. js代码: //引用superagent包,用于服务器发送http请求 const request = require('superagent'); //导入cheeri ...
- metasploit魔鬼训练营靶机环境搭建(第二章)
环境搭建,书上已经很详细了,路由转发的那个鼓捣了好久都没弄好,菜的啊 所以先往书后面继续学习,不停留在配置环境上了. backtrack没有下载,使用的kali linux 其他的都是一样的 百度网盘 ...