异常处理器
1|0异常处理器
1|1问题导入
问题1:项目各个个层级均可能出现异常,异常处理代码书写在哪一层?
1|2异常介绍
- 程序开发过程中不可避免的会遇到异常现象,我们不能让用户看到这样的页面数据
出现异常现象的常见位置与常见诱因如下:
- 框架内部抛出的异常:因使用不合规导致
- 数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时)
- 业务层抛出的异常:因业务逻辑书写错误导致(例如:遍历业务书写操作,导致索引异常等)
- 表现层抛出的异常:因数据收集、校验等规则导致(例如:不匹配的数据类型间导致异常)
- 工具类抛出的异常:因工具类书写不严谨不够健壮导致(例如:必要释放的连接长期未释放等)
1|3异常处理器
编写异常处理器
异常处理器的底层原理,就是AoP。
@RestControllerAdvice是对Controller进行增强的,可以全局捕获spring mvc抛的异常。并匹配相应的@ExceptionHandler中指定的异常类型,重新封装异常信息,将统一格式返回给前端。
这个类所在的包要能够被Spring MVC扫描到
注意: springConfig类需要扫描exception包
使用异常处理器之后的效果
@RestControllerAdvice注解介绍
- 名称:@RestControllerAdvice
- 类型:类注解
- 说明:此注解自带@ResponseBody注解与@Component注解,具备对应的功能
@ExceptionHandler注解介绍
- 名称:@ExceptionHandler
- 类型:方法注解
- 位置:专用于异常处理的控制器方法上方
- 作用:设置指定异常的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前方法执行
- 说明:此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常
小结
1|4项目异常处理方案
问题导入
请说出项目当前异常的分类以及对应类型异常该如何处理?
项目异常分类
- 业务异常(BusinessException) /books/1
- 规范的用户行为产生的异常
- 不规范的用户行为操作产生的异常
- 系统异常(SystemException)
- 项目运行过程中可预计且无法避免的异常
- 其他异常(Exception)
- 编程人员未预期到的异常
项目异常处理方案
- 业务异常(BusinessException)
- 发送对应消息传递给用户,提醒规范操作
- 系统异常(SystemException)
- 发送固定消息传递给用户,安抚用户
- 发送特定消息给运维人员,提醒维护
- 记录日志
- 其他异常(Exception)
- 发送固定消息传递给用户,安抚用户
- 发送特定消息给编程人员,提醒维护(纳入预期范围内)
- 记录日志
项目异常处理代码实现
根据异常分类自定义异常类
自定义项目系统级异常
自定义项目业务级异常
自定义异常编码(持续补充)
触发自定义异常
在异常通知类中拦截并处理异常
分别写三个方法用来捕获每种异常
测试:在postman中发送请求访问getById方法,传递参数-1,得到以下结果:
小结
文件上传的必要前提:
文件上传原理分析
SpringMVC的文件上传
构建maven工程添加相关依赖
编写 jsp 页面
编写控制器
配置文件解析器
测试文件上传的运行结果
__EOF__
作 者:YXH
出 处:https://www.cnblogs.com/YxinHaaa/p/17476566.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」