SpingMVC拦截器-异常处理的思路,用户体验不好的地方

1、异常处理机制

1.1 原先我们的异常都是手动的try..catch() 

2、他存在着一些缺陷:这里创建了一个Demo的controller,内部有一个show方法:

3、访问内部,我要实现demoshow方法,我们来调用show1和show2的方法:

4、有一个DemoSerive方法:在这个DemoSerive实现当中有一个show1的方法:方法内部比较简单,就是造异常

5、在我们show哪里有一个DemoSerive

5.1 在serive内部有一个show1的方法:

6、这里方法内部比较简单,其实就是造异常,作死,字符串转成数字,那肯定是报错,报什么异常,报一个类型转换异常。 

6.1 后面还有其他作死异常

7、第五个异常,我手动抛一个空指针异常

8、自己定义一个异常,在这个包里定义异常:

9、原先在框架阶段,我们都是怎么处理异常的,基本上都是try catch

9.1

10、耦合到一起了

11、这里产生了一个新的概念,能不能将这个异常抽取出来

12、利用某一个组件执行找不到的组件

13、异常处理的思路-------预期异常和运行时的异常

13.1 

14、往上抛

15、他的异常处理思路:

15.1今天咱们的学习主要围绕着这个绿色的方框展开工作:如果是springMVC我编好了,咱们得控制,如果springMVC没给我,我自己能定义

16、异常处理的两种方式:下面的汉语翻译是简单的映射处理器:

16.1 如果你出一个错误2,我跳一个错误2页面,如果错误三,我跳一个错误3页面:上面是异常跟页面跳射的映射关系:这是上面的核心

17、我自己定义一个异常处理器的接口:我内部可以做相应的代码操作:

17.1

18、简单异常处理器,这些东西我到底应该怎么配置:配异常和视图的一种映射配置:你比如换一家异常的,这个地方就配个bean

18.1 他内部就指定几个配置:error就是视图名称

19、如果展示的视图:展示的视图是abc就行 

19.1 因为我是配置内部视图解析器:

20、如果你配的异常,跟我们下面所配的异常都不匹配,就会去走下面这个:

21、说完这个,再说下面这个:

22、往error里面去跳:

23、如果是类转化异常,也往error里去跳:

---------24、用户体验不好的地方:出现了这个,下次不去你网站买东西了,用户体验不好,即使是网络异常,也给一个友好的用户提示,网络异常,请找管理员等等

24.1下面如何实现友好提示:先给他配置一下:先配一个简单的异常处理器:simMapper---

25、内部配东西,我先配个默认的:

26、我配个error原因是在web页面下,没有这个error,建一个

26.1 弄一个error页面:

27、效果,错误还存在不过再次输入路径跳转到这个页面了:这个可以写的好看一点,找到exceptingMappers

28、这里再重新写一下,找到exceptionMapping,异常映射

 

28.1

29、这里有一个Map,里面配异常,配那些异常,entry

1811​​​​​​​03-SpringMVC异常处理-简单异常处理器_哔哩哔哩_bilibili

29.1 entry,key是业务名称

 29.2 业务名称是,我刚才在业务层抛异常

29.3 这是类转换异常:

 29.4 给他写一个key

29.5 选中右键copy

 29.6 这叫类型转化异常,不过你得往哪跳呢

 29.7 value值代表着往哪跳,你可以在这里多建几个:

 

 29.8 再多建几个异常

 29.9 我这里有一个自定义异常,我在这里调用show5的时候,咱看一下这个show5方法:

 29.10 这个是自定义的,这个给copy一下:

 29.11 如果报这个错误,我就让你去访问这个error2页面,重启一下

 29.12 此时我再去访问:这里调用的是show1方法,如果想调用show2方法,就要换一个方法

 29.13 在控制器中切换show方法5

 29.14 此时爆异常报那个

 29.15 页面会进行匹配,匹配那个成功,就往那个页面进行跳转

30、效果

 

-----------自定义异常处理步骤,简单映射处理器是spring帮我们配好的,我要用这个配置: 自定义异常处理比刚才简单映射处理器就是多了一步:

31、第一步创建一个异常处理器

31.1、第二步配置,我得让spring容器知道,我有真么一个异常处理器控制机制:

32、在com.itheima下面创建一个package

32.1 建一个resolver的包

 32.2 创建一个新的类:这个类就是我的异常处理器

 32.3  创建好之后,我们要干什么,接入一个exception接口

 32.4 把未处理的异常给处理一下,resolve

32.5 这里会把异常对象,给你封装到这

 32.6 不同异常可以返回不同操作,最后返回一个ModelandView

  32.7 这里比较关键的是我们的exception对象,他是你爆异常的异常对象

 32.8 跳转的错误的视图信息

 32.9 我们刚才的demo有很多的异常:比如有这个类转换异常

 32.10 这里有我们自定义的异常,我有什么MyE,当前的异常是不是我的自定义异常 

33、如果是自定义异常,我就返回一个ModelAndView

34、如果是类转化异常,最后返回一个视图:

34.1 非往域中添加异常、

35、第一步实现接口,覆盖方法

36、第二个叫配置

37、你到底什么异常,往哪跳,我在逻辑内部就已经知道了

37.1 现在你知道放到容器内部执行就行了

38、找到我们的springMVC

38.1 编写我们的自定义处理器

 38.2  把他发布一下

39、取一下info的数据

39.1

40、成功取出信息,这里我在自定义的异常处理器当中

 

41、执行这里的逻辑

42、再有异常怎么着,往上抛

 

42.1   -----------------SpringMVC知识要点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/89119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SCCB与IIC的异同及FPGA实现的注意事项

文章目录 前言一、信号线二、SCCB数据传输格式三、SCCB写(与IIC完全一致)四、SCCB读五、SCCB和IIC的区别 前言 IIC接口有比较广泛的应用,而SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV&…

uniapp踩坑合集

1、onPullDownRefresh下拉刷新不生效 pages.json对应的style中enablePullDownRefresh设置为true,开启下拉刷新 {"path" : "pages/list/list","style" :{"navigationBarTitleText": "页面标题名称","enable…

mysql 、sql server 临时表、表变量、

sql server 临时表 、表变量 mysql 临时表 创建临时表 create temporary table 表名 select 字段 [,字段2…,字段n] from 表

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-BiL…

发布一个开源的新闻api(整理后就开源)

目录 说明: 基础说明 其他说明: 通用接口: 登录: 注册: 更改密码(需要token) 更换头像(需要token) 获取用户列表(需要token): 上传文件(5000端口): 获取文件(5000端口)源码文件,db文件均不能获取: 验证token(需要token): 获取系统时间: 文件…

什么是数据中心IP,优缺点是什么?

如果根据拥有者或者说发送地址来分类的话,可以将代理分为三类:数据中心ip,住宅ip,移动ip 本文我们来了解数据中心ip的原理以及他们的优势劣势,才能选择适合自己的代理。 一、什么是数据中心ip代理? 数据中心ip是由数据中心拥有…

C语言练习2(巩固提升)

C语言练习2 选择题 前言 “志之所趋,无远弗届,穷山距海,不能限也。”对想做爱做的事要敢试敢为,努力从无到有、从小到大,把理想变为现实。要敢于做先锋,而不做过客、当看客,让创新成为青春远航的…

java+springboot+mysql村务档案管理系统

项目介绍: 使用javaspringbootmysql开发的村务档案管理系统,系统包含超级管理员、工作人员角色,功能如下: 超级管理员:系统用户管理(工作人员管理);公开资料;会议记录&…

ensp-Ipv6配置配置

ensp-Ipv6配置配置 📎ipv6.zip📎Ipv6 网络.docx

什么牌子的运动耳机好、好的运动耳机排行榜

运动与健康息息相关,人们越来越认识到运动带来的益处,例如增强心肺功能、提高新陈代谢率,并能预防多种慢性疾病。随着社交媒体上越来越多人分享自己的运动心得,更多的人也被激发起参与其中的热情。在运动过程中,音乐的…

STM32之17.PWM脉冲宽度调制

一LED0脉冲宽度调制在TIM14_CHI&#xff0c;先将LED&#xff08;PF9&#xff09;代码配置为AF推挽输出模式&#xff0c;将PF9引脚连接到TIM14&#xff0c; #include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void) {//打开端口F的硬件时钟&a…

【docker】基于dockerfile编写LNMP

目录 一、基础环境准备 二、部署nginx&#xff08;容器IP为172.18.0.10&#xff09; 1、整个Dockerfile文件内容 2、配置nginx.conf文件 3、构建镜像 ​编辑 三、部署mysql 1、整个Docker文件内容 2、准备my.conf文件 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PH…

身为一个后端程序员如何快速制作后端管理系统的UI

前言 我的专业领域在后端开发上&#xff0c;前端我仅仅是熟悉&#xff0c;但是要从头开发一个前端UI界面有点难为人了。那么身为一个后端程序员我们怎么来开发后端管理系统UI界面呢&#xff1f; 方案1&#xff1a;现成的模版来套&#xff08;有一定的前端基础&#xff0c;只是…

Wireshark数据抓包分析之UDP协议

一、实验目的&#xff1a; 通过使用wireshark对UDP数据包的抓取分析UDP协议的内容 二、预备知识&#xff1a; UDP协议的概念&#xff1a;UDP使用底层的互联网协议来传送报文&#xff0c;同IP一样提供不可靠的无连接传输服务。它也不提供报文到达确认、排序及流量控制等功能。 …

PDF校对:追求文档的精准与完美

随着数字化时代的到来&#xff0c;PDF已经成为了多数机构和个人首选的文件格式&#xff0c;原因在于它的稳定性、跨平台特性以及统一的显示效果。但是&#xff0c;对于任何需要公开或正式发布的文档&#xff0c;确保其内容的准确性是至关重要的&#xff0c;这就是PDF校对显得尤…

Elasticsearch简介及安装

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

大数据(一)定义、特性

大数据&#xff08;一&#xff09;定义、特性 本文目录&#xff1a; 一、写在前面的话 二、大数据定义 三、大数据特性 3.1、大数据的大量 (Volume) 特性 3.2、大数据的高速(Velocity)特性 3.3、大数据的多样化 (Variety) 特性 3.4、大数据的价值 (value) 特性 3.5、大…

Kali Linux 2023.3 发布

Offective Security 发布了 Kali Linux 2023.3&#xff0c;这是其渗透测试和数字取证平台的最新版本。 Kali Linux 2023.3 中的新工具 除了对当前工具的更新之外&#xff0c;新版本的 Kali 通常还会引入新的工具。 这次&#xff0c;他们是&#xff1a; Calico – 云原生网络…

java八股文面试[数据结构]——Map有哪些子类

知识来源&#xff1a; 【23版面试突击】 用过哪些Map类&#xff0c;都有什么区别&#xff0c;HashMap是线程安全的吗&#xff1f;_哔哩哔哩_bilibili https://www.cnblogs.com/bubbleboom/p/12694013.html

【前端】深入解析CSS:选择器、显示模式、背景属性和特征剖析

目录 一、前言二、CSS的复合选择器1、后代选择器①、语法②、注意事项 2、子选择器①、语法②、注意事项 3、并集选择器①、语法②、注意事项 4、链接伪类选择器①、语法②、注意事项 三、CSS元素显示模式转换1、转换为块元素display:block2、转换为行内元素display:inline3、转…