Spring Boot学习入门之统一异常处理详解
发布时间 - 2026-01-11 03:05:27 点击率:次前言

关于之前的一篇所讲到的表单验证中提到,如果产生错误,可以得到错误的信息,但是返回值的问题却没有考虑。
其中所提到的Controller:
@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
public @ResponseBody User doRegister(@Valid User user, BindingResult result, Model model) {
if (result.hasErrors()) {
List<ObjectError> list = result.getAllErrors();
for (ObjectError error : list) {
System.out.println(error.getDefaultMessage());
}
return null;
}
System.out.println("注册..");
return user;
}
如果验证不通过,我们不应该返回null的,这会对前端来说并不友好。
所以我们应该定义一个统一的返回格式:
public class ReturnType {
private int code;
private User data;
private String msg;
public ReturnType(int code, String msg, User data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public User getData() {
return data;
}
public void setData(User data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
这样一来,返回的结果中的json的格式是固定的。
虽然我们的希望是好的,但是并不是总是可以这样的,因为不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。
如果存在下面这种情况:
@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
public @ResponseBody ReturnType doRegister(@Valid User user, BindingResult result, Model model) throws Exception {
throw new Exception("new Exception");
}
这就好像在调用Service层代码的时候,执行方法的过程中遇到了一个异常,那么回得到什么样的结果呢?
无论如何,返回的肯定不是我们之前定义好的格式的返回值。
那我们应该怎么做呢?
这里就需要进行统一的异常处理了。
@ControllerAdvice
public class ExceptionHandle {
/* 表明这个handler只处理什么类型的异常
* */
@ExceptionHandler(value = Exception.class)
// 返回值为json或者其他对象
@ResponseBody
public ReturnType handle(Exception e) {
return new ReturnType(-1, e.getMessage(), null);
}
}
创建这么一个handler类,当Controller抛出异常的时候,就会委托给这个类其中的方法进行执行。
这样一来,就不会出现即使抛出异常,也不会得到不是我们期望的返回值的结果了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# spring
# boot
# 异常处理
# 统一异常
# 统一异常处理
# Spring Boot统一异常处理详解
# spring boot请求异常处理并返回对应的html页面
# SpringBoot初始教程之统一异常处理详解
# 详解Springboot自定义异常处理
# Spring Boot全局异常处理解析
# springboot全局异常处理详解
# SpringBoot学习之全局异常处理设置(返回JSON)
# Spring Boot中使用AOP统一处理web层异常的方法
# 浅谈Spring Boot 异常处理篇
# 如何优雅的处理Spring Boot异常信息详解
# 返回值
# 我们应该
# 抛出
# 就会
# 这就
# 却没有
# 这种情况
# 怎么做
# 不可避免
# 这篇文章
# 谢谢大家
# 可以得到
# 表单
# 或者其他
# 这会
# 讲到
# 值为
# 过程中
# 操作过程
# 无论如何
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
详解jQuery中基本的动画方法
如何快速搭建自助建站会员专属系统?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
微信小程序 配置文件详细介绍
如何为不同团队 ID 动态生成多个“认领值班”按钮
Windows Hello人脸识别突然无法使用
Swift中swift中的switch 语句
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
,南京靠谱的征婚网站?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
javascript日期怎么处理_如何格式化输出
如何用PHP快速搭建CMS系统?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
在Oracle关闭情况下如何修改spfile的参数
C语言设计一个闪闪的圣诞树
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
如何快速搭建安全的FTP站点?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
微信小程序 canvas开发实例及注意事项
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
JavaScript如何实现音频处理_Web Audio API如何工作?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
微信小程序 闭包写法详细介绍
高防服务器如何保障网站安全无虞?
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Python函数文档自动校验_规范解析【教程】
php json中文编码为null的解决办法
,交易猫的商品怎么发布到网站上去?
网站建设整体流程解析,建站其实很容易!
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何用免费手机建站系统零基础打造专业网站?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
SQL查询语句优化的实用方法总结
新三国志曹操传主线渭水交兵攻略
高性价比服务器租赁——企业级配置与24小时运维服务
北京企业网站设计制作公司,北京铁路集团官方网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何获取上海专业网站定制建站电话?
如何正确下载安装西数主机建站助手?

