前言

关于之前的一篇所讲到的表单验证中提到,如果产生错误,可以得到错误的信息,但是返回值的问题却没有考虑。
其中所提到的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异常信息详解
# 返回值
# 我们应该
# 抛出
# 就会
# 这就
# 却没有
# 这种情况
# 怎么做
# 不可避免
# 这篇文章
# 谢谢大家
# 可以得到
# 表单
# 或者其他
# 这会
# 讲到
# 值为
# 过程中
# 操作过程
# 无论如何
相关文章:
专业网站建设制作报价,网页设计制作要考什么证?
建站VPS选购需注意哪些关键参数?
建站之星后台密码遗忘?如何快速找回?
建站主机如何选?性能与价格怎样平衡?
制作公司内部网站有哪些,内网如何建网站?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
php json中文编码为null的解决办法
Python路径拼接规范_跨平台处理说明【指导】
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何通过服务器快速搭建网站?完整步骤解析
,有什么在线背英语单词效率比较高的网站?
建站之星3.0如何解决常见操作问题?
定制建站流程步骤详解:一站式方案设计与开发指南
建站之星官网登录失败?如何快速解决?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
孙琪峥织梦建站教程如何优化数据库安全?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何在宝塔面板中创建新站点?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
微信小程序 五星评分(包括半颗星评分)实例代码
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
移民网站制作流程,怎么看加拿大移民官网?
如何在阿里云完成域名注册与建站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站之星后台管理系统如何操作?
建站主机如何选?高性价比方案全解析
如何快速选择适合个人网站的云服务器配置?
广州商城建站系统开发成本与周期如何控制?
山东网站制作公司有哪些,山东大源集团官网?
如何在阿里云服务器自主搭建网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
建站之星如何保障用户数据免受黑客入侵?
黑客如何通过漏洞一步步攻陷网站服务器?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
怀化网站制作公司,怀化新生儿上户网上办理流程?
建站主机与服务器功能差异如何区分?
linux top下的 minerd 木马清除方法
建站之星如何实现PC+手机+微信网站五合一建站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
黑客入侵网站服务器的常见手法有哪些?
建站之星如何配置系统实现高效建站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
宝塔建站助手安装配置与建站模板使用全流程解析
如何高效配置IIS服务器搭建网站?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
音响网站制作视频教程,隆霸音响官方网站?
重庆市网站制作公司,重庆招聘网站哪个好?
如何在宝塔面板中修改默认建站目录?
常州自助建站费用包含哪些项目?
,石家庄四十八中学官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。