SpringBoot异常处理以及对数据正确性的检查

一个项目中的异常处理是非常沉重的话题,每次做项目中如果异常处理的不好,轻微一点的会让测试人员找到你的问题,严重点的会把报错的日志打印给客户展示,这可能会造成比较严重的生产事故,那么我们该如何优雅的处理程序产生的异常呢?这就是我们接下来的话题。本文将会使用SpringBoot框架结合异常处理来和大家一起进行探讨。

https://blog.csdn.net/yelvgou9995/article/details/83933106

我们需要思考的问题

在目前的前后端分离开发中,通常会去使用Swagger之类的接口工具去规范我们的接口,这时对于接口返回的状态(通常为success和error),都会在我们的接口文档中进行规范。所以,我们的全局异常处理及异常发生后给前端返回的错误信息,都要跟接口文档保持一致。

测试项目的建立

首先利用IDE工具,创建一个SpringBoot的项目,这里笔者采用IDEA来进行演示,需要引入的maven依赖如下:

此处除了ing的Web相关功能外还加入了JSR -303校验框架。

写一个Code类来定义成功和失败的返回码

再写一个Response类来定义接口返回的响应

写一个自定义的异常类MyException

接着再写一个全局异常处理器并且对我们的MyException进行处理

在Controller中模拟抛出业务异常

通过测试工具模拟请求接口

此处笔者使用的测试工具是DebugAPI。

编写实体类User,并且对username字段设置非空校验

在全局异常处理器中进行拦截

写一个UserController的控制器类

再次使用DebugAPI模拟请求

此时非常清楚地看到,我们的框架拦截到了该异常,并返回code码400,msg提示“用户名不能为空“。这对于前端及用户来说,都是非常直观的报警方式。前端接收到这个报错信息后可以非常优雅地进行处理并将结果返回给使用系统的客户。

我们的项目结构如下:

总结及收尾

对于程序中异常的处理方式有很多种,那么对于我们来说,只有适合自己的才是最好的。不要一味地去追求功能强大。能满足够用即可。那么大家在团队中都应该摸索出自己的一套异常解决方案。我们文章中提到的异常处理,只要一个最简单的Demo,那么对于业务中存在的异常,需要定义大量的业务错误码,甚至需要一个团队来专门对系统的异常进行单独操作。

此文起到一个抛砖引玉的作用,希望大家在开发中能发挥自己的想象力,努力做出适合自己的异常处理系统。

SpringBoot异常处理以及对数据正确性的检查相关推荐

  1. springboot统一异常处理及返回数据的处理

    springboot统一异常处理及返回数据的处理 参考文章: (1)springboot统一异常处理及返回数据的处理 (2)https://www.cnblogs.com/renshengruozhi ...

  2. SpringBoot异常处理的简单理解

    Springboot异常处理: 1.局部异常处理: 直接对Controller类进行操作 2.全局统一异常处理 Springboot两种全局异常统一处理的方式: A.使用继承BasicErrorCon ...

  3. 【Springboot学习笔记】SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法

    [Springboot学习笔记]SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法 目录 1.搭建环境 1.1直接从网上下载SpringB ...

  4. (7)数据段权限检查

    代码段和系统段描述符的权限检查方式并不一样,详见后续课程,本文只探讨数据段. 一.数据段权限检查 DPL是段的权限属性,要想访问一个数据段,段选择子和CPU当前权限必须高于DPL.要注意,权限数值越低 ...

  5. SpringBoot异常处理ErrorController详解

    文章目录 一.背景 二.SpringBoot的默认异常处理BasicErrorController 三.自定义错误异常 写在前面: 我是「境里婆娑」.我还是从前那个少年,没有一丝丝改变,时间只不过是考 ...

  6. 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...

    一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进 ...

  7. springboot异常处理方式

    springboot异常处理方式 参考文章: (1)springboot异常处理方式 (2)https://www.cnblogs.com/whalesea/p/11384397.html 备忘一下.

  8. SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)

    SpringBoot系列五:SpringBoot错误处理(数据验证.处理错误页.全局异常) 参考文章: (1)SpringBoot系列五:SpringBoot错误处理(数据验证.处理错误页.全局异常) ...

  9. SpringBoot:Mybatis + Druid 数据访问

    SpringBoot:Mybatis + Druid 数据访问 文章目录 SpringBoot:Mybatis + Druid 数据访问 1.简介 2.JDBC 3.CRUD操作 4.自定义数据源 D ...

最新文章

  1. 有这一篇机器学习全够了
  2. WPF中的动画——(五)路径动画
  3. 一个有意思的js小问题
  4. Dataset之AllstateClaimsSeverity:AllstateClaimsSeverity数据集(Kaggle2016竞赛)的简介、下载、案例应用之详细攻略
  5. docker安装gamit_Gamit-Globk完整安装攻略
  6. Sniffer Pro 教程
  7. 人工智能AI实战100讲(七)-原理+代码实战 | 双目视觉中的极线校正
  8. c语言i=5.6a=(int)i,第一章C语言概述.ppt
  9. 3dmaxuv展开很多线_考研 | 最全考研复试时间线!参考价值超大!
  10. python实现登陆注册跳转_Python模拟登录和登录跳转的参考示例
  11. 杨森翔的书法:二月二;四条屏
  12. python实现决策树算法
  13. 也就整了一万字的「数据指标体系」指南。
  14. 解决微信公众平台图片不可引用
  15. flask url_for()和redirect的区别
  16. 中债登——各功能快捷入口
  17. 2022-04-01每日刷题打卡
  18. python 机械臂控制_机械臂正运动学-DH参数-Python快速实现
  19. STM32通定时器时间设置步骤和计算公式方法寄存器值
  20. 苹果ipad怎么刷机_苹果iPhone SE 2(3GB/64GB/全网通)手机密码忘记怎么刷机?

热门文章

  1. XAMPP:访问phpmyadmin出错的解决方案
  2. Expression Blend实例中文教程(13) - 控件模板快速入门ControlTemplates
  3. SQL游标原理和使用方法(转)
  4. python3.6教程案例分析_python 3.6 --实战Scrapy
  5. Redis面试常问3 如何实现分布式锁 记住Redis的原子性
  6. Socket技术详解
  7. ndroid中View.inflate()
  8. mysql 按照条件计数_灵活的CASE...WHEN:SQL同时按条件计数按条件加和
  9. ArrayList 实现原理及源码解析(jdk8 底层⽤的是数组)
  10. Spring Boot 入门程序