SpringMVC全局异常处理机制

news/2025/3/29 15:52:50/

异常处理机制

异常处理的两种方式:

编程式异常处理:是指在代码中显式地编写处理异常的逻辑。它通常涉及到对异常类型的检测及其处理,例如使用 try-catch 块来捕获异常,然后在 catch 块中编写特定的处理代码,或者在 finally 块中执行一些清理操作。

声明式异常处理:将异常处理的逻辑从具体的业务逻辑中分离出来,通过配置等方式进行统一的管理和处理。在声明式异常处理中,开发人员只需要为方法或类标注相应的注解(如 @Throws 或 @ExceptionHandler),就可以处理特定类型的异常。相较于编程式异常处理,声明式异常处理可以使代码更加简洁、易于维护和扩展。

声明式异常处理方式

1/声明全局异常处理器控制类

/*** projectName: com.atguigu.execptionhandler* * description: 全局异常处理器,内部可以定义异常处理Handler!*//*** @RestControllerAdvice = @ControllerAdvice + @ResponseBody* @ControllerAdvice 代表当前类是全局异常处理器 * @ResponseBody 代表不映射试图,直接返回字符串给客户端*/
@RestControllerAdvice
public class GlobalExceptionHandler {}

2/在控制类中声明异常处理handler方法

异常处理handler方法和普通的handler方法参数接收和响应都一致!

只不过异常处理handler方法要映射异常,发生对应的异常会调用!

普通的handler方法要使用@RequestMapping注解映射路径,发生对应的路径调用!

异常处理handler 使用  @ExceptionHandler(HttpMessageNotReadableException.class)  注解指定发生HttpMessageNotReadableException异常时调用该方法!

package com.xin.config; /*** projectName: com.atguigu.execptionhandler* * description: 全局异常处理器,内部可以定义异常处理Handler!*/import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** @RestControllerAdvice = @ControllerAdvice + @ResponseBody* @ControllerAdvice 代表当前类是全局异常处理器 * @ResponseBody 代表不映射试图,直接返回字符串给客户端*/
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 异常处理handler** @param e 获取异常对象!* @return 返回handler处理结果!* @ExceptionHandler(HttpMessageNotReadableException.class) 该注解标记异常处理Handler, 并且指定发生异常调用该方法!*/@ExceptionHandler(HttpMessageNotReadableException.class)public Object handlerJsonDateException(HttpMessageNotReadableException e) {return null;}/*** 当发生空指针异常会触发此方法!** @param e* @return*/@ExceptionHandler(NullPointerException.class)public Object handlerNullException(NullPointerException e) {return null;}/*** 所有异常都会触发此方法!但是如果有具体的异常处理Handler!* 具体异常处理Handler优先级更高!* 例如: 发生NullPointerException异常!* 会触发handlerNullException方法,不会触发handlerException方法!** @param e* @return*/@ExceptionHandler(Exception.class)public Object handlerException(Exception e) {return null;}
}


http://www.ppmy.cn/news/1582866.html

相关文章

星型拓扑网络原理、图传模块架构与路由NAT需求探讨

一、星型拓扑网络的工作原理 星型拓扑网络原理 • 在星型拓扑中,所有设备(如PC、STA、无线接入点AP等)都通过一个中心节点(如交换机、路由器或接入点)进行通信。 • 中心节点是所有设备互相交换数据的核心部分。每个…

【智能体】| 知识库、RAG概念区分以及智能体是什么

文章目录 前言简介大模型“幻觉”问题如何解决“幻觉”问题? RAG、智能体、RAG智能体概念什么是检索增强型生成(RAG)模拟简单的RAG场景 AI系统中的智能体是什么什么是Agentic RAG?Agentic RAG如何工作?Agentic RAG架构…

在windows下安装windows+Ubuntu16.04双系统(上)

这篇文章的内容主要来源于这篇文章,给文章很详细的介绍了如何从windows下安装windowsubuntu16.04双系统。我刚开始装双系统都是参照这个方法,该作者前后更新了两个版本,在这里对其稍微进行整理一下。 一、准备:(这里推…

【Linux】信号:产生信号

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.信号信号处理简单理解信号的发送和保存由软件产生的信号由硬件(异常)产生的信号 01.信号 进程信号是操作系统提供的一种异步通知机制,用于…

.NET三层架构详解

.NET三层架构详解 文章目录 .NET三层架构详解引言什么是三层架构表示层(Presentation Layer)业务逻辑层(Business Logic Layer,BLL)数据访问层(Data Access Layer,DAL) .NET三层架构…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…

安装和管理最新的Python3环境(以Mac为例)

背景: 随着大模型技术的快速发展,各种基于AI的测试技术也层出不穷,有些场景需要在较高版本的Python3环境下实现,否则可能会出现兼容性问题。另外考虑自己对于Python3的各个版本环境的管理和使用其实一直都不是特别的清楚&#xf…

【ArcGIS】ArcGIS10.8安装过程(失败记录)

参考 ArcGIS 10.8中文版详细安装教程(附安装包)_arcgis10.8-CSDN博客 双击ArcGIS_Desktop_108_172737.exe程序 解压完成 选择完全安装 选择安装目录 原:C:\Program Files (x86)\ArcGIS\ Python安装目录 原:C:\Python27\ 点击Install开始安装 安装中…