掌握Spring MVC异常处理的艺术

news/2025/2/6 15:24:37 标签: spring, spring cloud, spring boot, 微服务, 后端

在Spring MVC中处理异常,就好比你在家里做饭时遇到了问题,比如切菜切到手了(运行时异常),或者发现没盐了(预期异常)。那么,你该怎么应对这些情况呢?Spring MVC处理异常的方式,可以简单地分为几步:

1.发现异常

就像你切菜时突然感到手指一疼,或者炒菜时发现味道不对(哦,是没放盐!),Spring MVC在处理请求的过程中,也会“发现”异常。这些异常可能来自Controller、Service或DAO层。

2.异常分类

异常大致可以分为两类:一类是预期会发生的异常,比如没盐了,这种异常你可以提前准备好应对措施;另一类是运行时异常,比如切到手了,这种异常往往出乎意料。在Spring MVC中,也有类似的分类,比如自定义业务异常(预期异常)和运行时异常(如NullPointerException等)。

3.处理异常

局部处理

就像你切到手了,可能会立即找创可贴包扎(局部处理)。在Spring MVC中,你也可以在Controller层使用@ExceptionHandler注解来局部处理异常。这种方式适用于某个Controller特有的异常处理逻辑。

全局处理

但如果你发现家里经常没盐,每次都要跑下楼去买,那就太麻烦了。这时,你可能会在家里备一瓶盐,一旦没盐了就直接加(全局处理)。同样地,在Spring MVC中,你也可以使用@ControllerAdvice注解或实现HandlerExceptionResolver接口来全局处理异常。这样,不管哪个Controller抛出了异常,都可以由全局异常处理器来统一处理。

4.给用户反馈

处理完异常后,你还需要给用户一个反馈。就像你切到手后告诉家人“我没事,已经包扎好了”,或者发现没盐后告诉家人“稍等,我这就去买盐”。在Spring MVC中,异常处理器可以返回一个ModelAndView对象,其中包含了要显示的错误页面和错误信息。这样,用户就能看到友好的错误提示了。

总结

所以,Spring MVC处理异常的过程,就好比你在家里做饭时遇到问题的应对过程:发现异常(切到手了/没盐了)分类处理(预期异常/运行时异常)局部或全局处理(找创可贴/备一瓶盐),最后给用户反馈(告诉家人我没事/稍等我去买盐)


http://www.niftyadmin.cn/n/5843127.html

相关文章

Python aiortc API

本研究的主要目的是基于Python aiortc api实现抓取本地设备(摄像机、麦克风)媒体流实现Web端预览。本文章仅仅描述实现思路,索要源码请私信我。 demo-server解耦 原始代码解析 http服务器端 import argparse import asyncio import json…

剑指offer 栈和队列 持续更新中...

文章目录 1. 用两个栈实现队列1.1 题目描述1.2 解法 2. 用队列实现栈2.1 题目描述2.2 方法1,直接模拟2.3 方法22.3 方法3,一个队列 1. 用两个栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) 1.1 题目描述 题目描述&#xff1a…

11.kafka开启jmx

方式一: 1.进入/opt/kafka_2.13-3.3.2/bin目录 命令: cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 ~]# cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# pwd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# 2.备份kafka-run-class.sh 命令: cp kafka-run-class.sh …

win32汇编环境,对话框程序生成选项卡(属性页\标签)控件及运用

;运行效果 ;win32汇编环境,对话框程序生成选项卡(属性页\标签)控件及运用 ;主要是生成1个选项卡,同时准备好几个对话框,然后将对话框叠加到选项卡控件里面,在运行时点击哪一项时则显示对应的对话框。 ;以下示例显示3个项的选项卡控件 ;直接抄进RadAsm可编译运行。重要部分加…

Java synchronized锁升级

偏向锁、轻量级锁和重量级锁是Java中synchronized关键字的三种锁状态,用于优化多线程环境下的性能。以下是它们的简要说明: 1. 偏向锁(Biased Locking) 目的:减少无竞争时的锁开销。适用场景:只有一个线程…

Linux 文件和目录

Linux 文件和目录 文章目录 Linux 文件和目录Linux 目录Linux 目录配置的依据 --FHS目录树文件属性文件的分类一般权限 UGO特殊权限 suid\sgid\sticky隐藏属性 ATTR文件访问控制列表 ACL文件相关的命令权限的修改 chmod chown chgrp umaskchmodchgrpumask相关文档 /etc/profile…

Java 进阶day14XML Dom4j 工厂模式 Base64

目录 知识点1、XML 概念XML约束 知识点2、XML解析 Dom4j(Dom for java)XPath 知识点3、工厂模式知识点4、Base64 知识点1、XML 概念 XML的全称为(eXtensible Markup Language),是一种可扩展的标记语言。 XML的作用&…

实现一个 LRU 风格的缓存类

实现一个缓存类 需求描述豆包解决思路:实现代码:优化11. std::list::remove 的时间复杂度问题2. 代码复用优化后的代码优化说明 优化21. 边界条件检查2. 异常处理3. 代码封装性4. 线程安全优化后的代码示例优化说明 DeepSeek(深度思考R1&…