SpringBoot——全局异常捕获和自定义异常
时间:2022-07-25
本文章向大家介绍SpringBoot——全局异常捕获和自定义异常,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、概述
介绍: 在我们开发项目的时候,有时候发生的异常是我们没有预料到的,则异常显示就会是Springboot的自定义显示。这样在使用来说很不友好,因此我们需要一个全局异常的捕获,进行一个格式化的输出,或者也可以预先定义我们自己的异常。以此实现对异常的优雅处理。(我此处只展示前后端分离的情况,返回json数据)
二、自定义异常
介绍: 自定义异常需要继承Exception或者RuntimeException,然后在异常处理器中进行执行异常的处理。代码如下:
/**
* 自定义异常:业务异常
*
* @Author: xjf
* @Date: 2019/12/1 22:20
*/
public class BusinessException extends RuntimeException {
/**
* 存放具体的异常信息
*/
private String message;
public BusinessException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
三、统一异常处理
**介绍:**此处需要一个全局异常的捕获处理,同时可以加入指定异常的自定义处理。
/**
* 自定义异常处理
*
* @Author: xjf
* @Date: 2019/12/1 22:14
*/
@RestControllerAdvice
public class CustomExceptionHandler {
private Logger log = LoggerFactory.getLogger(CustomExceptionHandler.class);
/**
* 捕获全局异常,处理所有不可知的异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
public ReturnResult handleGlobalException(Exception e){
log.error("出现全局异常错误:{}", e.getMessage());
e.printStackTrace();
return ReturnResult.error(e.getMessage(), ReturnMsg.EXCEPTION1.getCode(),ReturnMsg.EXCEPTION1.getMsg());
}
/**
* 捕获自定义异常
* @param e
* @return
*/
@ExceptionHandler(BusinessException.class)
public ReturnResult handleMyException(BusinessException e){
log.error("出现自定义异常错误:{}", e.getMessage());
e.printStackTrace();
return ReturnResult.error(e.getMessage(), ReturnMsg.EXCEPTION5.getCode(), ReturnMsg.EXCEPTION5.getMsg());
}
}
- 崔立鹏:腾讯云为知识竞技游戏提供解决方案
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- 常用的AJAX弹出层代码
- Linux下检测IP地址冲突及解决方法
- linux如何挂载windows下的共享文件
- silverlight2中的定时器,以及如何动态改变控件的坐标
- 定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
- jQuery1.3以上版本"@"的问题
- 龚宏绩:三七互娱游戏上云的现状与未来
- Android 程序打包及签名
- 韩伟:解谜腾讯游戏海量服务架构
- Message和handler传递对象
- MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题
- 结构struct(值类型)在实际应用要注意的二点:
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- java学习应用篇|使用环境变量做一些工具
- 【Java8新特性】06 新的日期和时间:LocalDate LocalTime LocalDateTime
- UNSAFE和Java 内存布局
- 【玩转Redis面试第1讲】Redis数据结构和常用命令速记
- SSM 单体框架 - 教育平台后台管理系统:课程模块
- 【玩转Redis面试第2讲】面试官再问Redis事务把这篇文章扔给他
- SSM 单体框架 - 教育平台后台管理系统:Maven 进阶使用
- SSM 单体框架 - 教育平台后台管理系统:广告和用户模块开发
- 杀死进程
- SSM 单体框架 - 教育平台后台管理系统:权限模块开发
- 版本控制系统 - GIT
- Spring Cloud Gateway 读取、修改请求体(解决request body内容被截断)
- SimpleTuning
- Nginx 配置
- 深入浅析内存