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