spring boot 全局異常 springboot接口參數(shù)注解怎么處理異常參數(shù)?
springboot接口參數(shù)注解怎么處理異常參數(shù)?帶有@Valid的注釋用于幫助我們檢查參數(shù)。在最初定義的統(tǒng)一異常處理類中,我們可以捕捉methodirgumentnotvalidexc如何處理Spr
springboot接口參數(shù)注解怎么處理異常參數(shù)?
帶有@Valid的注釋用于幫助我們檢查參數(shù)。在最初定義的統(tǒng)一異常處理類中,我們可以捕捉methodirgumentnotvalidexc
如何處理SpringBoot全局異常與數(shù)據(jù)校驗?
這個問題其實是兩個方面,一個是SpringBoot的全局異常處理方法,一個是SpringBoot的數(shù)據(jù)驗證。讓 讓我們一個一個來。
事實上,全局異常處理需要我們統(tǒng)一捕獲和處理系統(tǒng)運行中的異常,具體的處理邏輯是根據(jù)業(yè)務(wù)進行的,可以記錄在日志中,由前端返回,再由前端提示。
那么如何捕獲和處理這樣的全局異常呢?
在SpringBoot中,有一個注解——@ controller advice。由該注釋修改的bean表示它已經(jīng)啟用了全局異常的捕獲。我們只需要在這個帶注釋的類中定義一個方法,使用@ExceptionHandler的注釋,我們需要定義要捕獲的異常的類型,來統(tǒng)一處理這些捕獲的異常。
在實際生產(chǎn)中,我們通常會為業(yè)務(wù)定義一些自定義異常來捕捉業(yè)務(wù)中不合理的情況,比如數(shù)據(jù)異常;然后由@ControllerAdvice定義的類中的@ExceptionHandle方法攔截異常,從而捕獲并處理異常。
給一個 "栗子 "!
我首先定義了一個新的異常類來捕獲業(yè)務(wù)場景中的各種業(yè)務(wù)問題:
在業(yè)務(wù)場景中,如果遇到不正確的操作,將引發(fā)以下異常:
拋出的異常將被我們定義的全局異常處理程序捕獲和處理:
至此,實現(xiàn)了SpringBoot的全局異常處理。
讓 讓我們來談?wù)勵}主提到的數(shù)據(jù)驗證。通常我們在操作數(shù)據(jù)時,不僅前端需要對數(shù)據(jù)進行驗證,后端也要進行攔截并給出相應(yīng)的。
我們可以使用SpringBoot中包含的hibernate-validator來做這件事。
既然hibernate-validator已經(jīng)包含在spring-boot-starter-web中,我們就不做 不需要介紹jar。
給一個 "栗子 "!
在需要驗證的實體類中,我們使用相應(yīng)的注釋。常見的注釋有很多,最常見的是 amp的判斷非空 ",即@NotBlank注釋:
然后,在控制器層中,將通過用@Valid注釋進行標(biāo)記來檢查接收實體:
驗證失敗后,我們可以定義一個全局異常處理程序來捕獲數(shù)據(jù)驗證。失敗,從而返回到統(tǒng)一的返回值處理。
當(dāng)兩者結(jié)合時,可以優(yōu)雅地實現(xiàn)用于數(shù)據(jù)驗證的全局異常捕獲的統(tǒng)一處理。
歡迎關(guān)注我的頭條【首頁程序員】繼續(xù)思考有趣的標(biāo)題(不是內(nèi)容哈哈)。
——一個閑來無事,呆在家里的家庭程序員。我不 我不想掉頭發(fā)!)