SpringMVC全局異常處理機制

異常處理機制

異常處理的兩種方式:

編程式異常處理:是指在代碼中顯式地編寫處理異常的邏輯。它通常涉及到對異常類型的檢測及其處理,例如使用 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.pswp.cn/pingmian/73246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73246.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入LangChain:LLM交互機制與RAG集成的技術

本文將聚焦于 LangChain 如何集成檢索增強生成(RAG),了解其架構、主要組件,以及與 LLM 的交互 LangChain 架構概覽 1、基礎層 這是與各類 LLM 對接的 “橋梁”。LangChain 支持多種流行的 LLM,如 OpenAI 的系列模型、H…

本地部署 LangManus

本地部署 LangManus 0. 引言1. 部署 LangManus2. 部署 LangManus Web UI 0. 引言 LangManus 是一個社區驅動的 AI 自動化框架,它建立在開源社區的卓越工作基礎之上。我們的目標是將語言模型與專業工具(如網絡搜索、爬蟲和 Python 代碼執行)相…

SQL注入(SQL Injection)攻擊原理與防御措施

SQL是一種代碼注入技術,可使攻擊者修改應用程序向數據庫提供的查詢。 迄今為止,最常見和最嚴重的應用 程序安全威脅總是隱藏在與數據庫有某些連接的網絡應用 程序中。 通過這種 SQL 注入,攻擊者可以繞過登錄程序,獲取、更改甚至更…

【算法】十大排序算法(含時間復雜度、核心思想)

以下是 **十大經典排序算法** 的時間復雜度、空間復雜度及穩定性總結,適用于面試快速回顧:排序算法對比表 排序算法最佳時間復雜度平均時間復雜度最差時間復雜度空間復雜度穩定性核心思想冒泡排序O(n)O(n)O(n)O(1)穩定相鄰元素交換,大數沉底…

LVS的 NAT 模式實現 3 臺RS的輪詢訪問

使用LVS的 NAT 模式實現 3 臺RS的輪詢訪問 1.配置 RS(NAT模式)2. 配置 LVS 主機(僅主機、NAT模式)2.1 配置僅主機網卡(192.168.66.150/24 VIP )2.2 配置 NAT 網卡(192.168.88.6/24 DIP&#xff…

一、MySQL8的my.ini文件

MySQL8.0.11的安裝版本my.ini配置文件默認存放在:C:/Program Files/MySQL/MySQL Server 8.0/ 目錄下;而MySQL8.0.11綠色免安裝版本是沒有my.ini配置文件,用戶可以自行構建后,再通過my.ini進行數據庫的相關配置 一、MySQL8.0.11默…

微調這件小事:訓練集中的輸入數據該作為instruction還是input?從LLaMA-Factory的源碼中尋找答案吧~

在之前的博文中,我們已經了解了LLaMA-Factory框架執行各類任務的流程。今天,我們將深入探討SFT微調過程中關于數據集的兩個關鍵問題: 數據集中的instruction和input是如何結合起來生成大模型可以理解的輸入的?instruction是不是就是system prompt呢?(之所以會問這個問題,…

nacos-actuator漏洞

1、nacos配置文件添加以下配置 vim application.properties# 添加以下配置項 management.endpoints.enabled-by-defaultfalse management.server.port-12、重啟Nacos systemctl restart nacos3、驗證 打開地址http://ip:port/nacos/actuator查看是否有敏感信息輸出&#xff0…

extern關鍵字的用法

目錄 總述 一、聲明外部變量 二、聲明外部函數 三、實現模塊化編程 四、與"C" 連用,實現C和C的混合編程 五、注意事項 六、疑點補充(你可能會有和我一樣的疑問?) 總述 在C和C中,extern關鍵字用于聲明外…

Jboss漏洞再現

一、CVE-2015-7501 1、開環境 2、訪問地址 / invoker/JMXInvokerServlet 出現了讓下載的頁面,說明有漏洞 3、下載ysoserial工具進行漏洞利用 4、在cmd運行 看到可以成功運行,接下來去base64編碼我們反彈shell的命令 5、執行命令 java -jar ysoserial-…

Android平臺毫秒級低延遲HTTP-FLV直播播放器技術探究與實現

一、前言 在移動互聯網蓬勃發展的今天,視頻播放功能已成為眾多Android應用的核心特性之一。面對多樣化的視頻格式和傳輸協議,開發一款高效、穩定的視頻播放器是許多開發者追求的目標。FLV(Flash Video)格式,盡管隨著H…

BUAA XCPC 2025 Spring Training 2

C \color{green}{\texttt{C}} C [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 給定一棵以 1 1 1 為根的樹,記 a i a_{i} ai? 表示節點 i i i 的權值, lca( i , j ) \text{lca(}i,j) lca(i,j) 表示節…

MySQL 中,分庫分表機制和分表分庫策略

在 MySQL 中,分庫分表是一種常見的數據庫水平擴展方案,用于解決單庫單表數據量過大導致的性能瓶頸問題。通過將數據分散到多個數據庫或表中,可以提高系統的并發處理能力、降低單點故障風險,并提升查詢性能。 一、分庫分表的作用 提升性能: 分散數據存儲和查詢壓力,避免單…

組件日志——etcd

目錄 一、簡介 二、安裝【Ubuntu】 安裝etcd 安裝CAPI 三、寫一個示例 3.0寫一個示例代碼 3.1獲取一個etcd服務 3.2獲取租約(寫端操作) 3.3使用租約(寫端操作) 3.4銷毀租約(寫端操作) 3.5獲取etcd服務中的服務列表(讀端操作) 3.6監聽狀態變化(讀端操作) 一、簡介 Et…

python網絡爬蟲開發實戰之網頁數據的解析提取

目錄 1 XPath的使用 1.1 XPath概覽 1.2 XPath常用規則 1.3 準備工作 1.4 實例引入 1.5 所有節點 1.6 節點 1.7 父節點 1.8 屬性匹配 1.9 文本獲取 1.10 屬性獲取 1.11 屬性多值匹配 1.12 多屬性匹配 1.13 按序選擇 1.14 節點軸選擇 2 Beautiful Soup 2.1 簡介…

理解操作系統(一)馮諾依曼結構和什么是操作系統

認識馮諾依曼系統 操作系統概念與定位 深?理解進程概念,了解PCB 學習進程狀態,學會創建進程,掌握僵?進程和孤?進程,及其形成原因和危害 1. 馮諾依曼體系結構 我們常?的計算機,如筆記本。我們不常?的計算機&am…

Tomcat常見漏洞攻略

一、CVE-2017-12615 漏洞原理:當在Tomcat的conf(配置?錄下)/web.xml配置?件中添加readonly設置為false時,將導致該漏洞產 生,(需要允許put請求) , 攻擊者可以利?PUT方法通過精心構造的數據包…

快速求出質數

要快速判斷一個數是否為質數,可以采用以下優化后的試除法,結合數學規律大幅減少計算量: 步驟說明 處理特殊情況: 若 ( n \leq 1 ),不是質數。若 ( n 2 ) 或 ( n 3 ),是質數。若 ( n ) 能被 2 或 3 整除&…

Linux上位機開發實戰(camera視頻讀取)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】 關于linux camera,一般都是認為是mipi camera,或者是usb camera。當然不管是哪一種,底層的邏輯都是v4l2&#x…

高性能緩存:使用 Redis 和本地內存緩存實戰示例

在現代高并發系統中,緩存技術是提升性能和降低數據庫壓力的關鍵手段。無論是分布式系統中的Redis緩存,還是本地高效的本地內存緩存,合理使用都能讓你的應用如虎添翼。今天,我們將基于go-dev-frame/sponge/pkg/cache庫的代碼示例&a…