全域性異常處理 快速返回給前端錯誤資訊

2021-10-05 10:01:55 字數 3534 閱讀 1651

使用全域性異常處理來處理校驗邏輯的思路很簡單,首先我們需要通過@controlleradvice註解定義乙個全域性異常的處理類,然後自定義乙個校驗異常,當我們在controller中校驗失敗時,直接丟擲該異常,這樣就可以達到校驗失敗返回錯誤資訊的目的了。

@controlleradvice:類似於@component註解,可以指定乙個元件,這個元件主要用於增強@controller註解修飾的類的功能,比如說進行全域性異常處理。

@exceptionhandler:用來修飾全域性異常處理的方法,可以指定異常的型別。

/**

* 自定義api異常

* created by macro on 2020/2/27.

*/public

class

apiexception

extends

runtimeexception

public

apiexception

(string message)

public

apiexception

(throwable cause)

public

apiexception

(string message, throwable cause)

public ierrorcode geterrorcode()

}

/**

* 斷言處理類,用於丟擲各種api異常

* created by macro on 2020/2/27.

*/public

class

asserts

public

static

void

fail

(ierrorcode errorcode)

}

/**

* 全域性異常處理

* created by macro on 2020/2/27.

*/@controlleradvice

public

class

globalexceptionhandler

return commonresult.

failed

(e.getmessage()

);}}

/**

* 使用者優惠券管理controller

* created by macro on 2018/8/29.

*/@controller

@api

(tags =

"umsmembercouponcontroller"

, description =

"使用者優惠券管理")(

"/member/coupon"

)public

class

umsmembercouponcontroller

", method = requestmethod.post)

@responsebody

public commonresult add

(@pathvariable long couponid)

//改進後

@apioperation

("領取指定優惠券"

)(value =

"/add/"

, method = requestmethod.post)

@responsebody

public commonresult add

(@pathvariable long couponid)

}

/**

* 使用者優惠券管理service

* created by macro on 2018/8/29.

*/public

inte***ce

umsmembercouponservice

/**

* 會員優惠券管理service實現類

* created by macro on 2018/8/29.

*/@service

public

class

umsmembercouponserviceimpl

implements

umsmembercouponservice

if(coupon.

getcount()

<=0)

date now =

newdate()

;if(now.

before

(coupon.

getenabletime()

))//判斷使用者領取的優惠券數量是否超過限制

smscouponhistoryexample couponhistoryexample =

newsmscouponhistoryexample()

; couponhistoryexample.

createcriteria()

.andcouponidequalto

(couponid)

.andmemberidequalto

(currentmember.

getid()

);countbyexample

(couponhistoryexample);if

(count>=coupon.

getperlimit()

)//省略領取優惠券邏輯...

return commonresult.

success

(null,

"領取成功");

}//改進後

@override

public

void

add(long couponid)

if(coupon.

getcount()

<=0)

date now =

newdate()

;if(now.

before

(coupon.

getenabletime()

))//判斷使用者領取的優惠券數量是否超過限制

smscouponhistoryexample couponhistoryexample =

newsmscouponhistoryexample()

; couponhistoryexample.

createcriteria()

.andcouponidequalto

(couponid)

.andmemberidequalto

(currentmember.

getid()

);countbyexample

(couponhistoryexample);if

(count>=coupon.

getperlimit()

)//省略領取優惠券邏輯...

}}

SpringBoot處理全域性異常返回json字串

之所以要在專案中定義全域性異常捕獲,是因為直接異常資訊給前端是真的很不友好。首先,建立乙個commonexceptionhandler 類 自定義 在類頭加上 controlleradvice註解。description 公共異常處理類 author gary date 2019 03 22 23 ...

錯誤處理的返回 異常還是返回值

推薦使用異常 因為異常設計就是為了決解 什麼出了錯?在哪齣的錯?為什麼出錯?1.通過使用異常可以明確 錯誤的型別,錯誤的原因,錯誤出現的地方並且呼叫者強制處理,這提高程式的健壯性 robust 而返回值方式需要呼叫者主動去處理。2.使用異常可以使 更加優雅 可讀性提高。不用寫各種if else判斷情...

錯誤處理之函式返回值OR異常處理

問題 1 錯誤處理的方法有哪些?2 使用函式返回值還是丟擲異常?3 php 原框架下的異常處理機制是怎樣的?4 php yii框架下的錯誤處理方案是怎樣的?有什麼參考意義?如上所述四種處理方法,成員變數的方式多數使用在處理結果不用立即返回的情況,譬如對多個資料字段進行校驗返回校驗結果,使用場景比較明...