阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_18-异常处理-不可预知异常处理...
框架抛出来的或者一些第三方的组件抛出来的异常。我们根本不知道它所对应的错误代码的信息,所以我们也没有办法给用户返回具体的错误代码和错误信息。
我们先在Map中定义有一些不可预知的异常,定义错误代码和错误信息。如果我们在map中找到了这个错误代码,我们可以给用户返回,如果我们没有找到。就返回统一的99999异常
这种异常我们自定义的错误代码。例如返回操作失败,请与管理员联系这种。
对于不可预知的异常我们这么去处理。
首先模拟一下不可预知的异常。添加的方法,我们body里面不传json数据就调用后端方法
这个时候返回了400错误信息,这不是我们统一的响应格式信息。
这才是我们统一的响应信息
要么把这类异常返回为99999。要么就把这些异常定义一个具体的代码
首先在项目里面我们想把这类异常捕获到。在异常捕获类里面,这里@ExceptionHandler来捕获Exception.class这个类型的异常。
但是这里我们获取不到异常的代码
在这里加一个断点,我们看下异常的类型是什么
断点进来。把这个捕获的异常信息复制出去。
异常意思是请求的body 没有数据
争对这类异常我们统一返回99999。就是CommCode这个枚举里面的Server_error
例如这里我们返回99999
这样最终统一返回的数据如下
Map中定义
有些不可预知的异常是可以定义错误代码的
我们可以对HttpMessageNotReadableException这个类型定义错误代码。
在CommonCode定义非法参数的这个枚举
ImmutableMap 是谷歌的工具包下的类型,这个map的数据一旦放进去是不可更改的。也就是只读的
前面的表示异常类型,异常都是会继承Throwable。后面是异常代码
再定义builder对象,builder对象是用来构建ImmutableMap的。注意修饰符是protected
那么怎么去构建呢?放在静态代码块里面。现在这个数据还在这个builder里面 ,一旦builder把数据构建到Map里面。这个map的数据将不能更改。
使用builder.build方法构建Map
测试
在这里加一个断点
空指针异常
这里应该用EXCEPTIONS来接收build构建的map对象。
再次测试
找到了错误代码并返回。
把这个请求改成get再去请求数据。返回的错误代码是 99999 因为这个错误没有加入到我们错误Map集合中。
以上不可预知异常处理就做完了。
转载于:https://www.cnblogs.com/wangjunwei/p/11578663.html
阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_18-异常处理-不可预知异常处理...相关推荐
- 2023年最新黑马程序员Java微服务项目--学成在线
正式上线Java微服务项目<学成在线> 项目对程序员的重要性 不用播妞多说了吧 更重要的是 这次是完整!实战!企业级!项目! 划重点:全新发布!正式上线! <学成在线>项目以在 ...
- 学成在线--7.CMS页面管理开发(异常处理)
文章目录 1.异常处理的问题分析 2.异常处理流程 3.可预知异常处理 1.自定义异常类 2.异常抛出类 3.异常捕获类 4.异常处理测试 1)定义错误代码 2)异常处理测试 4.不可预知异常处理 1 ...
- 学成在线--5.CMS页面管理开发(修改页面)
文章目录 1.修改页面流程 1)前端逻辑 2)后端逻辑 2.修改页面接口定义 3.后端开发--Dao 4.后端开发--Service 5.后端开发--Controller 1)根据id查询页面 2)保 ...
- 学成在线--6.CMS页面管理开发(删除页面)
文章目录 0.删除用户逻辑 1.删除页面接口定义 2.后端开发--Dao 3.后端开发--Service 4.后端开发--controller 5.前端开发--page_list.vue添加删除按钮 ...
- 学成在线--4.CMS页面管理开发(新增页面)
文章目录 1.定义新增页面接口 1)在model工程中定义响应模型 2)在api工程中添加接口 2.新增页面服务端开发 1)Dao 2)Service 3)Controller 3.新增页面前端开发 ...
- 学成在线--3.CMS页面管理开发(自定义条件查询)
文章目录 0.需求分析 1.服务端--Dao 2.服务端--Service 3.服务端--Controller 4.前端 1)page_list.vue中增加查询表单 2)page_list.vue中 ...
- 学成在线 职业规划 页面
学成在线 职业规划 页面 为什么这么赶呢,主要是PS白嫖期快过了1/3了,总得赶在试用期之前做完嘛-- 之前的进度 第一版跟着视频做的,也写了步骤分解,详情可以看这个:学成在线 制作分解版. 完整的页 ...
- 学成在线 课程列表 页面
学成在线 课程列表 页面 在美好的礼拜天,正好我们不调休,把最后一个页面给完成了. 和其他用浮动座位布局方式比起来,课程类表页面最终还是使用了flexbox去布局,一来主要内容最下面的 分页 部分用浮 ...
- 微服务实战项目-学成在线-课程发布模块
学成在线-课程发布模块 1 模块需求分析 1.1 模块介绍 课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课.支付.在 ...
- 学成在线首页——静态页面基础项目(HTML+CSS)【学习笔记】
来源:黑马前端 难度:⭐(简单)--适合刚学习html和css的新手小白 源码和素材:链接: https://pan.baidu.com/s/1Qf6OuMNyFDswJOcB93NCrw 提取码: ...
最新文章
- Linux 操作系统原理 — 内存 — mmap 进程虚拟内存映射
- python 保留两位小数 实现方法
- Pandas简明教程-适用于竞赛、研究以及办公自动化
- js window.open()实现打印,如何在关闭打印窗口时刷新父窗口
- Java 高并发下的实践
- 路透社:谷歌已停止与华为部分合作;联想否认断供华为PC;微软计划直供Linux内核;谷歌无人机快递Wing进军芬兰……...
- js 判断移动端还是pc端,ios或者android
- git web框架搭建_Git,Python Web框架,AI,机器学习,Android,Linux和更多必读内容
- 希科系统(CxServer)经济效益和社会效益分析
- wav格式怎么转换成flac?
- R语言实现随机分组(按照学号或者是姓名随机分组)
- 计算机键盘最小化,电脑最小化键盘怎么按
- 检测站营销系列文章:机动车检测站如何做精益营销?
- 解决ios微信公众号h5页面新增底部前进后退导航栏产生的布局问题
- 架构必备:Rate limiting 的作用和常见方式
- 如何卸载Cygwin
- 【MarkDown使用技巧】轻松搞定MarkDown
- BUUCTF-Crypto-看我回旋踢
- 干货 | 80篇+网络安全面试经验帖
- Gitee使用时TimeOut问题解决
热门文章
- 拓端tecdat|R语言蒙特卡洛方法:方差分量的Metropolis Hastings(M-H)、吉布斯Gibbs采样比较分析
- matlab 分水岭法,matlab中的分水岭算法
- java activit怎么画图_Activiti 入门示例
- 指定LINUX内存大小,linux下内存大小、起始地址的解析与修改
- python pandas 之drop()函数
- img = cv2.imread() 后面要跟im = im[:, :, (2, 1, 0)] # 图片做预处理
- ubuntu将一个文件夹下的所有内容复制到另一个文件夹下
- Ubuntu 16.04 安装QQ, TIM
- 修改linux文件权限命令:chmod超级详细讲解
- 零基础学启发式算法(6)-蚁群算法 (Ant Colony Optimization, ACO)