簡體   English   中英

Spring Boot @ExceptionHandlers 如何攔截異常

[英]How do Spring Boot @ExceptionHandlers intercept exceptions

例如,假設我們有一個 post 映射,它創建並返回一個 person 對象,它的請求正文提供了名字和姓氏,它們都是某些數據庫的主鍵。 如果任一值為 null,則引發異常。

假設我們設置了另一個控制器來處理異常並使用 @controlleradvice 和 @exceptionhandler 注釋以及返回 ResponseEntity 的方法攔截它 它實際上如何攔截異常以及為什么處理程序的返回類型不必匹配拋出它的 post 方法的返回類型。 抱歉,如果這是一個愚蠢的問題,我似乎無法理解。 我想了解幕后發生的事情。

我了解注釋的作用以及我們指定要處理的異常,我只是不明白如何

ExceptionHandler是 Spring 面向方面的編程術語中的切入點方面。

根據切入點文檔:

切入點:匹配連接點的謂詞。 Advice 與切入點表達式相關聯,並在與切入點匹配的任何連接點處運行(例如,執行具有特定名稱的方法)

我們在ExceptionHandler注釋中定義異常類型(即Exception.class等)。 在這種情況下,Jointpoint 方面是處理通知(此處為ControllerAdvice )方法引發的異常。

當通知的方法中發生異常時,您應該拋出該異常並且您的彈簧建議攔截該異常並將控制傳遞給切入點,然后匹配異常類型並進行處理。

關於ExceptionHandler的方法簽名, 文檔說它很靈活,因此返回您定義的 post 方法的類型並不嚴格。

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM