【SpringBoot】SpringBoot中的异常处理和异常跳转页面

news2024/11/18 3:18:40

目录

1.异常跳转页面

1.1 概念

1.2 使用

2.异常处理

2.1 概念

2.2 通过@ExceptionHandler 注解处理异常(局部处理)

2.3 通过@ControllerAdvice 注解处理异常(全局处理)

2.4 通过 SimpleMappingExceptionResolver 对象处理异常(全局)

2.5 通过自定义 HandlerExceptionResolver 对象处理异常(全局)


1.异常跳转页面

1.1 概念

  • SpringBoot中支持给异常提供跳转页面,避免直接将异常信息输出给客户端。
  • 这些页面的使用规则springboot已经定好了,如果想要使用原生的按照它的规则来即可。

1.2 使用

(1)首先在在templates目录下创建子目录error,并在error目录下创建异常状态码命名的模板。通常是 404.html,500.html, 4xx.html(x为通配符),5xx.html(x为通配符)。

(2)如果出现了上面命名的状态码,则跳转该给模版页面中。4xx.html,5xx.html,这两个表示只要出现了已4或者5开头的状态码错误就跳转到该页面。

(3)还可以在templates目录下直接创建error.html,如果没有对应的异常页面,则全部跳转到该error.html。

注意:要严格按照规定的方式命名,因为底层已经给我们写好了相应的单元方法跳转页面。

如图,写一个404异常页面,启动服务器,在地址栏中输入一个找不到的页面就会直接跳转到该页面。

2.异常处理

2.1 概念

在 Spring Boot 项目中除了设置异常提示页面,还可以通过注解实现异常错误的处理。 常见方式如下:

  1. 在控制器类中添加一个方法,结合@ExceptionHandler。但是只能对当前控制器中方法出 现异常进行解决。
  2. 新建全局异常类,通过@ControllerAdvice 结合@ExceptionHandler。当全局异常处理和 局部处理同时存在时,局部生效(就近原则)
  3. 配置类的方式实现。

2.2 通过@ExceptionHandler 注解处理异常(局部处理)

 如下图是该注解的使用,在控制器类中写异常处理方法,解决该类中出现异常。

地址栏访问后,页面发生跳转,出现的空指针异常被处理了。服务器后台不会报错

2.3 通过@ControllerAdvice 注解处理异常(全局处理)

配置异常处理类如下。

同样对下面的单元方法进行访问

出现异常后,会进到异常处理类进行处理,处理后跳转页面

2.4 通过 SimpleMappingExceptionResolver 对象处理异常(全局)

如图所示,创建配置类,添加出现的异常类型,和跳转的资源页面。

对比springmvc的配置方式如下,其实上买的那种方式也就是springmvc的配置方法而已。

2.5 通过自定义 HandlerExceptionResolver 对象处理异常(全局)

自定义Springmvc的异常处理bean,该类是我们面向HandlerExceptionResolver 接口写实现,配置为Bean后,DispatherServlet底层会面向接口调用我们写的这个实现。

配置之后,同样访问上面的单元方法,会得到一样的结果。

注:SimpleMappingExceptionResolver也是实现了HandlerExceptionResolver 接口是官方已经写好了的,我们直接使用即可,但上面这个是我们自定义的。

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

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

相关文章

AI大模型达人秘籍:豆瓣9.2分推荐必读!

有很多程序员正在AIGC赛道中默默发财,有通过短视频做内容爆火,接广告的;有卖AI解决方案的;有卖AI课程的;也有卖AI产品,慢慢做大做强的…更不必说,那些拿下“人均年薪100万”大模型相关岗位的“赢…

多模态 AI 是零售业的未来吗?使用 GPT-4 Vision 和 MongoDB 矢量搜索探索智能产品发现

生成式人工智能如何重新定义零售盈利能力 欢迎来到雲闪世界。想象一下这样的购物体验:您上传了一张心仪服装或商品的照片。片刻之后,您便会收到来自您喜爱的商店的个性化、AI 驱动的类似商品推荐。这是一种革命性的零售体验,由一款创新应用实…

从零到一,数据恢复不求人!2024年四款全免费神器,轻松搞定

活在这个电脑手机满天飞的时代,我们天天跟数据打交道。工作文件、家庭照片、视频,这些都是我们的宝贝,一旦没了或者出问题,那可真够呛。好在我们有高科技帮忙,数据恢复现在也不是啥大问题。今儿个,我要给你…

数说故事 | 2024巴黎奥运会,“谷子文化”出圈了

全红婵金牌,全网沸腾。 摘金之后全妹的痛包(itabag,是指挂满人物徽章和玩偶等周边的包包,因为这样的包会让人感觉“奇怪和夸张,日语的“痛”有此含义,所以被称为“痛包”),也让二次…

多模态大模型(MLLM):架构篇

**【导读】**多模态大模型主要是以LLM作为核心决策模块,主流架构有两种:LLM as Discrete Scheduler/Controller和LLM as joint part of system,第一种LLM充当任务调度的作用,第二种LLM通过Encoder-LLM-Decoder结构作为系统的关键连…

探索Python性能优化的神秘力量:Line Profiler

文章目录 探索Python性能优化的神秘力量:Line Profiler第一部分:背景第二部分:库简介第三部分:安装指南第四部分:基本使用方法第五部分:实际应用场景场景1:数据分析场景2:机器学习模…

Docker 离线下载镜像(本地)

最近很多离线下载镜像的网站挂了,可以选择 docker hub 下载上传到服务器 Docker desktop image-tools ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/04174b8cefe3445596e09b1e82d9253b.png 保存后,就可以上传服务器,通过 dock…

音频合成剪辑工具推荐哪个?5款高效工具不容小觑

在探索音乐和声音的世界中,我发现了几款令人兴奋的音频剪辑软件,它们不仅功能强大,而且完全免费。作为一个热衷于音频制作的爱好者,我深知找到一款既经济又高效的工具是多么重要。 今天,我想跟大家分享我的一些发现&a…

jeecg部署后端到ubuntu

安装java17 java -versionsudo apt updatesudo apt install openjdk-17-jre-headless安装tomcat 更新源 sudo apt update在apt中搜索tomcat sudo apt search tomcat安装tomcat10和tomcat10-admin sudo apt install tomcat9 tomcat9-admin启动tomcat sudo systemctl start…

C语言小练习(伍)

练习: 利用指针变量将一个数组中的数据反向输出。 void renew(int *p,int len) {for(int i len - 1;i > 0;i--){printf("%d",*(pi));} }int main() {int a[5] {1,2,3,4,5};int len1 sizeof(a) / sizeof(int);renew(a,len1);return 0; }运行结果: …

AI文生图新纪元:FLUX.1领衔,多款顶尖模型汇聚趋动云社区

前言 近期,SD(Stable Diffusion)原班人马(跳槽后新成立团队——Black Forest Lab)开源模型 FLUX.1,或成文生图模型新霸主! FLUX.1 系列包含 pro、dev、schnell 3 个模型。主要在文字生成、复杂指令遵循和人手生成上具备优势。 FLUX.1pro&a…

爆学C++之类和对象(上)

1.类的定义 类定义格式 • class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 • …

IDEA中设置类和方法的注释

分两步设置: 第一个设置是创建类的时候自动加的注解 第二个设置是快捷键为方法增加的注解 类的时候自动加的注解设置 注释模版 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#end /** * Description: TODO * Auth…

IOPaint部署,在服务器Ubuntu22.04系统下——点动科技

这里写目录标题 一、ubuntu22.04基本环境配置1.1 更换清华Ubuntu镜像源1.2 更新包列表:2. 安装英伟达显卡驱动2.1 使用wget在命令行下载驱动包2.2 更新软件列表和安装必要软件、依赖2.2 卸载原有驱动2.3 安装驱动2.4 安装CUDA2.5 环境变量配置 二、安装miniconda环境…

2024年第九届机器人与自动化工程国际会议(ICRAE 2024)即将召开!

2024年第九届机器人与自动化工程国际会议(ICRAE 2024)将于11月15-17日在新加坡举办。ICRAE 2024会议旨在为机器人与自动化工程等领域的专家学者建立一个广泛有效的学术交流平台,以便让参会人员及时了解行业发展动态、掌握最新技术,促使我们快速、准确地解…

在scss中如何使用hover(Vue项目)

在scss中如何使用hover(Vue项目) 最近在Vue项目中,想实现在鼠标悬浮时,修改鼠标指向的模块样式,但使用的是scss,写法是什么样的呢? 效果图: 实现代码: .content {widt…

Android系统和开发--安全性和权限管理 SELinux 策略 安全架构

学习android权限知识 SElinux chmod -R 777 ./ setenforce 0 adb root su fastboot oem at-unlock-vboot adb disable-verity Android权限 Android系统是基于Linux内核构建的,因此它继承了Linux的权限管理机制。Android应用需要通过声明权限来访问系统的某些功能&…

使用docker compose一键部署redis服务

使用docker compose一键部署redis服务 1、创建安装目录 mkdir /data/redis/ -p && cd /data/redis2、创建docker-compose.yml文件 version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/xiaopangpang/redis:7.0.5container_name: redisrestart: al…

Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型

一、背景知识 进程即正在执行的一个过程。进程是对正在运行的程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 一&#xff09…

专利审查信息查询

1 登录国知局 国家知识产权局 政务服务平台 (cnipa.gov.cn) 进入网上办事 2 中国及多国专利审查信息查询 3 输入条件 弹出窗口 下载。 我们学校没有授权电子申请,没有办法,得自己关注!