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 层异常处理,可以处理大部分开发中用到的自自定义业务异常处理了,再也不用 ...
随机推荐
- Netty 搭建 WebSocket 服务端
一.编码器.解码器 ... ... @Autowired private HttpRequestHandler httpRequestHandler; @Autowired private TextW ...
- Python怎么控制将一个整数输出成指定长的十六进制数?
使用format方法,在格式控制中进行控制,具体控制参数为: {:#016X} 其中: 大括号表示该处从后面的format的参数中取值 冒号表示格式控制开始 0表示长度不足16位补0 16表示长度 X ...
- 第一章、PyQt的简介、安装与配置
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 第一章.PyQt的简介.安装与配置 一.引言 当朋友向我推荐PyQt时,老猿才知道有这样一个在Pyt ...
- Flutter · Python AI 弹幕播放器来袭
AI智能弹幕(也称蒙版弹幕):弹幕浮在视频的上方却永远不会挡住人物.起源于哔哩哔哩的web端黑科技,而后分别实现在IOS和Android的app端,如今被用于短视频.直播等媒体行业,用户体验提升显著. ...
- 分布式计算框架-Spark(spark环境搭建、生态环境、运行架构)
Spark涉及的几个概念:RDD:Resilient Distributed Dataset(弹性分布数据集).DAG:Direct Acyclic Graph(有向无环图).SparkContext ...
- 乌云wooyun网站硬盘复活
AWD比赛防止没有网络,在移动硬盘里面准备一个乌云漏洞库. 之前也想过弄一个乌云的镜像网站,无奈学生机性能太低下了,部署到公网上服务器存储空间都不够,只能部署在本地硬盘了. 乌云镜像的开源地址:htt ...
- ASP.NET Log4net数据库日志新增记录客户端ip
LOG4数据库记录器XML配置 1 <appender name="ADONetAppender" type="log4net.Appender.ADONetApp ...
- js onreadystatechange 和 onload的区别
IE的script 元素只支持onreadystatechange事件,不支持onload事件. FF的script 元素不支持onreadystatechange事件,只支持onload事件. 如果 ...
- setTimeout和setInterval的区别,包含内存方面的分析?
setTimeout表示间隔一段时间之后执行一次调用,而setInterval则是每间隔一段时间循环调用,直至clearInterval结束. 内存方面,setTimeout只需要进入一次队列,不会造 ...
- MarkDown的练习_Java开发学习路径
MarkDown的练习 语言学习 C/C++语言 Java语言 基础四大件 数据结构与算法 操作系统 计算机网络 设计模式 数据库/SQL 私人令牌:42bb654f53941d5692e98b35f ...