Spring MVC的高级功能——异常处理(三)异常处理注解

一、@ControllerAdvice注解的作用

        从Spring 3.2开始,Spring 提供了一个新注解@ControllerAdvice, @ControllerAdvice有以下两个作用。

•    注解作用在类上时可以增强Controller,对Controller中被@RequestMapping注解标注的方法加一些逻辑处理。
•    @ControllerAdvice注解结合方法型注解@ExceptionHandler,可以捕获Controller中抛出的指定类型的异常,从而实现不同类型的异常统一处理。

 接下来通过一个案例演示使用注解实现异常的分类处理,具体实现步骤如下所示。 

         1、创建名称为ExceptionAdvice的异常处理器。

        ExceptionAdvice类中定义2个处理不同异常的方法,其中doMyException()方法用来处理Handler执行时抛出的自定义异常, doOtherException()方法用来处理Handler执行时抛出的系统异常。

import com.itheima.exception.MyException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;import java.io.IOException;@ControllerAdvice
public class ExceptionAdvice {//处理MyException类型的异常@ExceptionHandler(MyException.class)public ModelAndView doMyException(MyException ex) throws IOException {ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("msg", ex.getMessage());modelAndView.setViewName("error.jsp");return modelAndView;}//处理Exception类型的异常@ExceptionHandler(Exception.class)public ModelAndView doOtherException(Exception ex) throws IOException {ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("msg", "网络异常!");modelAndView.setViewName("error.jsp");return modelAndView;}
}

        2、启动chapter13项目,在浏览器中访问地址http://localhost:8080/chapter13/showNullPointer,程序将执行showNullPointer()方法。

        3、在浏览器中访问地址http://localhost:8080/chapter13/addData,程序将执行addData()方法。

        从步骤2和步骤3所示的页面显示效果可以得出,使用@ControllerAdvice注解和@ExceptionHandler注解实现的异常分类处理,效果和上一节使用自定义异常处理器一样。

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

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

相关文章

uniapp + vue3 + Script Setup 写法变动 (持续更新)

一、uniapp 应用生命周期: https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意: 应用生命周期仅可在App.vue中监听,在其它页面监听无效。 二 、uniapp页面生命周期: https://uniapp.dcloud.net.cn/tutori…

C语言 输出所有的水仙花数

输出所有的“水仙花数”(水仙花数指一个三位数,其各位数字立方和等于该数本身。例如153是水仙花数,因为1^35^33^3153) 这个程序找出所有的三位水仙花数,并输出它们。 (如果每各数字立方和等于原数字&…

Java SE入门及基础(62) 线程池 执行器

线程池 1. 执行器 In all of the previous examples, theres a close connection between the task being done by a new thread, as defined by its Runnable object, and the thread itself, as defined by a Thread object. This works well for small applications, but…

Golang | Leetcode Golang题解之第212题单词搜索II

题目: 题解: type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

Zynq系列FPGA实现SDI视频编解码,基于GTX高速接口,提供5套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB图像缓存视频读取控制HDMI输出RGB转BT1120Gv8500 驱…

vuepress使用简介及个人博客搭建

目录 一、介绍二、环境准备三、安装运行vuepress四、目录结构五、配置文件六、导航栏配置七、导航栏logo八、浏览器图标九、侧边栏配置十、添加 Git 仓库和编辑链接十一、部署到GitHub十二、搭建成功 一、介绍 VuePress 是 Vuejs 官方提供的一个是Vue驱动的静态网站生成器&…

Qt 配置ASan

Qt 配置ASan 文章目录 Qt 配置ASan摘要关于ASan(AddressSanitizer)在Qt中配置 ASan1. 安装必要的工具2. 修改项目的 .pro 文件3. 重新构建项目4. 运行应用程序5. 分析错误报告示例注意事项 关键字: Qt、 ASan、 AddressSanitizer 、 GCC …

CTFHUB-SSRF-Redis协议

本题需要用到: 在线编码网址:https://icyberchef.com/ gopherus工具:https://mp.csdn.net/mp_blog/creation/editor/139440201 开启题目,页面空白 和上一个题FastCGI协议一样,还是使用gopherus攻击redis ./gopheru…

Oracle PL / SQL 插入insert 第二部分

DUAL表 dual是由具有一列和一行的oracle数据库(所有者SYS)拥有的表。 要评估1 1的添加,请执行以下SQl SELECT语句: SELECT 1 1 FROM dual; 快速找出oracle如何评估你对内置函数length()的使用。 SELE…

vlan基础相关

7.2以太网交换基础 数据链路层也叫2层网络,用的是Mac地址,想到Mac地址就要想到交换机。 以太网协议(LAN)以太网是建立在CSMA/CD载波监听多路访问/冲突检测,机制上的广播型网络。CSMA工作原理是先监听,在介…

110kV以下变电所电力监控-安科瑞电力监控解决方案

一、系统介绍 变电站电力监控系统为110kV及以下用户变电站提供了完整的SCADA功能。 二、系统硬件 AM5SE系列微机保护装置 全电参量测量 谐波制动独立操作回路 可编程出口矩阵;定制化的逻辑设计;故障录波;事件记录、故障 录波数据&#x…

在UniApp中使用Three.js渲染3D模型

在移动应用开发中,3D渲染正变得越来越普遍。本文将介绍如何在UniApp框架中集成Three.js库来渲染3D模型,为您的应用增添引人注目的视觉效果。 1. 简介 UniApp是一个跨平台开发框架,允许开发者使用Vue.js开发一次,就能发布到iOS、Android、Web等多个平台。Three.js则是一个强大…

3099. 哈沙德数 Easy

如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x 。如果 x 是 哈沙德数 ,则返回 x 各个数位上的数字之和,否则,返回 -1 。 示例 1: 输入&a…

高内聚低耦合举个例子详细介绍

学习目标: 高内聚低耦合举个例子详细介绍 学习内容: 高内聚和低耦合是软件设计中的两个重要原则,旨在提高系统的可维护性、可扩展性和灵活性。下面我们通过一个例子详细介绍高内聚和低耦合的概念及其实现方法。 例子:在线购物系…

聊天交友系统开发专业语聊交友app开发搭建同城交友开发婚恋交友系统相亲app开发

1、上麦相亲互动:直播间内除了红娘外,还有男女用户两个视频麦位,直播间符合要求的用户可以申请上麦 2、公屏聊天:为上麦用户可以通过在公屏发言的方式参与直播间内的话题互动。 3、私信,异性用户之间可以发送私信消息,通过付费或开通会员可解…

法国工程师IMT联盟 密码学及其应用 2023年期末考试补考题

1 JAVA 安全 1.1 问题1 1.1.1 问题 用 2 或 3 句话解释 Java 执行模型(Java 虚拟机machine virtuelle Java))中引入introduit沙箱bac sable机制 mcanisme d’excution par isolation的目的。 1.1.2 问题解释 在 Java 执行模型(Java 虚拟机…

知识见闻 - 什么是SAT求解器

SAT求解器(SAT solver,布尔可满足性问题求解器)是一种计算工具,用于确定是否存在一个变量赋值,使给定的布尔公式为真。布尔可满足性问题是计算理论中的一个重要问题,通常用来解决逻辑推理、验证和优化问题。…

Java面试八股文

一、Redis 1. 使用场景 (1)Redis的数据持久化策略有哪些 RDB:全称Redis Database Backup file(Redis数据备份文件),也被叫作Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故…

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…

JS如何把年月日转为时间戳

在JavaScript中,将年月日(通常表示为一个字符串或者分别的年、月、日数字)转换为时间戳(即Unix时间戳,是自1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒)可以…