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

news2024/11/20 15:40:31

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知识要点

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HAproxy】

目录 一、概述 1.简介 2.核心功能 3.关键特性 4.应用场景 二、使用步骤 1.内核配置 3.建立配置文件 4.添加为系统服务 5.添加3和5运行级别下自启动 6.启动haproxy 三、调度算法 四、配置文件 五、负载均衡 1.七层负载 1.1 配置负载 1.2 配置监控页面 2.四层负…

丰田中国vs中国丰田:一次历史性的战略探讨

比亚迪、长城、奇瑞等中国汽车品牌表现优异,让原本处于领先地位的日系、美系、德系等合资品牌面临压力,市场份额遭受前所未有的全新挑战。 东风雷诺、广汽菲克、广汽讴歌等逐渐退出中国市场,丰田也面临销售下滑。在中国汽车市场全新竞争格局下…

浅谈容器网络

1.什么是容器网络 容器网络是一种新兴的应用程序沙箱机制,用于家庭桌面和网络规模的 企业网络 解决方案,其概念与虚拟机类似。容器内部与主机和所有其他容器隔离的是一个功能齐全的 Linux 环境,具有自己的用户、文件系统、进程和网络堆栈。容…

跨部门协作如何实现高效无障碍?强推这6个协同办公工具!

在现代职场中,跨部门协作变得越来越常见。不同部门之间的协作能力直接影响到工作效率和协同成果。因此,寻找一款能够有效促进跨部门协作的工具是非常重要的。下面向大家推荐6款可以跨部门协作的工具,并从不同的职场场景进行介绍。 1、飞项 …

P1065 [NOIP2006 提高组] 作业调度方案

题目描述 我们现在要利用 m m m 台机器加工 n n n 个工件,每个工件都有 m m m 道工序,每道工序都在不同的指定的机器上完成。每个工件的每道工序都有指定的加工时间。 每个工件的每个工序称为一个操作,我们用记号 j-k 表示一个操作&…

C#_GDI+ 绘图编程入门

官网提供相关API GDI 基本图形功能_drawing 高级二维和矢量图形功能_drawing2D GDI 图像处理功能_Imaging GDI 排版功能_text Windows 窗体应用程序提供打印功能_Printing 像素 构成图像的最小单位就是像素;屏幕上显示不管是位图或者矢量图,当描述…

I2C通信协议

I2C总线接口 I2C(IIC,Inter一Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址…

1448. 统计二叉树中好节点的数目(C++题解)

1448. 统计二叉树中好节点的数目 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,4,3,nu…

门店数字化系统怎么做?

​如果门店只做线下生意,相信前几年的经历已经充分说明一旦客户不上门、生意就玩完;如果门店只做线上生意,无数平台的血泪教训也表明哪怕砸钱也无法跟大平台抗衡;因此,线上线下深度融合已经成为实体行业的必然趋势&…

解决 ‘bee‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

最近在学习go 中的beego框架,在下载依赖 之后执行bee new projectname 后出现了一个问题: 网上教程说是缺少环境变量,又说什么需要自己收到beego的src文件夹下编译main.go 忙活了半天,最后都以失败告终; 解决方案是: go install github.com/beego/bee/v2master执行bee ve…

【2023全网最全最火教程】WebSocket协议测试实战

当涉及到WebSocket协议测试时,有几个关键方面需要考虑。在本文中,我们将探讨如何使用Python编写WebSocket测试,并使用一些常见的工具和库来简化测试过程。 1、什么是WebSocket协议? WebSocket是一种在客户端和服务器之间提供双向…

爬虫逆向实战(二十一)-- 某某点集登录与获取数据

登录 一、数据接口分析 主页地址:某某点集 1、抓包 通过抓包可以发现登录接口是phonePwdLogin 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有pwd和sig两个加密参数 请求头是否加密? 无响应是否加密&#x…

Java并发工具类

JDK并发包中常用并发工具类: CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段; Exchanger工具类则提供了在线程间交换数据的一种手段。 等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成…

LTK5313功放芯片

LTK5313 是一款内置自适应升压F类音频功率放大芯片,具有AGC防破音功能、AB/D类模式切换、自适应、超低底噪、超低EMI。自适应升压在输出幅度较小时升压电路不工作,功放直接由电源供电,当输出较大时内部自动启动升压电路,功放供电…

每天一道leetcode:542. 01 矩阵(图论中等广度优先遍历)

今日份题目: 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例1 输入:mat [[0,0,0],[0,1,0],[0,0,0]] 输出&#xff…

如何从“监控”到“可观测性”?

什么是可观测性? 可观测性(Observability)是一种通过系统产生的输出数据(如日志、指标和链路追踪)来衡量当前系统运行状态的能力,其源于现代应用系统的复杂性和分布式架构,这些应用系统往往由大…

VUE之jspreadsheet电子excel表格动态高度设置

问题:excel电子表格在不同屏幕大小下横向滚动条会被遮挡 排查原因:由于excel高度固定导致 解决方法:设计页面较多,所以封装公共方法 步骤: 1.使用混入封装动态设置excel高度方法: const mixinJexcel …

达梦数据库分区表介绍

概述 本文将对达梦数据库分区表概念、创建、维护进行介绍。 1.分区表概念 1.1 分区表使用场景 近几年,随着移动支付快速发展,银行交易系统中【移动小微支付场景】使用越来越多,系统中流水账单表数据量巨大,往往上TB。 为了提高…

java八股文面试[JVM]——双亲委派模型

1.当AppClassLoader去加载一个class时,它首先不会自己去尝试加载这个类,而是把类加载请求委托给父加载器ExtClassLoader去完成。 2.当ExtClassLoader去加载一个class时,它首先也不会去尝试加载这个类,而是把类加载请求委托给父加载…

【esp32】GPIO引脚功能使用集合

本文主要介绍 esp32 这块芯片的GPIO 口功能使用以及软硬件设计注意事项 📋 个人简介 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页…