自定義 ZuulFilter丟擲異常

2021-08-19 21:58:46 字數 1177 閱讀 9590

前提:

專案中統一使用 httpresponsecode 來作為服務正常的返回, body 中放具體返回的內容.

如果丟擲異常的情況下,期望 code 是4xx,body 中存放錯誤資訊給使用者友好提示

但是,在springcloud 中預設的異常丟擲是乙個包含五個欄位的物件.如下:

我們需要的是這樣一種情況的:

接下來我們來實現這種情況.

首先,第乙個想到的是使用 @controlleradvice 來做全域性的異常攔截,對異常進行處理

但是,重啟過後並沒有什麼作用,忽然想到@controlleradvice 應該是只處理到達 controller 中的請求才能被攔截到,而 filter 在 controller 之前,所以攔截不到.那麼就要找其他方法來處理.

zuulfilter 中的 filtertype 中有乙個 error 的處理器.查詢這方面資料stackoverflow,別人也遇到過這種情況需要同樣的處理.

解決方案如下:

error 型別的 zuulfilter

執行順序在預設的 senderrorfilter (index=0)之前,因此,我們設定為-1

should 方法中檢查有沒有丟擲異常

run 方法中對異常進行處理

**如下:

@component

public

class

errorfilter

extends

zuulfilter

@override

public

intfilterorder

() @override

public

boolean

shouldfilter

() @override

public object run

() } catch (exception ex)

return

null;}}

丟擲異常 自定義異常

1 try catch try catch是這之間所包含的 如果出現異常時捕獲他,並進行處理的,如果 之間有錯誤,不會影響程式繼續執行下去,程式會繼續往後執行。2 throw 是在程式中明確丟擲引發的異常,比如throw new exception 3 finally 不管有沒有異常程式段中都會被執...

如何丟擲異常,自定義異常

定義乙個方法,丟擲 陣列越界和算術異常 多個異常 用 隔開 public void test1 int x throws arrayindexoutofbound ception,arithmeticexception 資料越界異常 else if x 1 算術異常 else if x 2 publ...

Java 丟擲異常 自定義異常類

常用的異常處理方法有 一 try catch 語句 二 throw throws 語句 三 自定義異常類 眾所周知,當程式執行過程中,如果遇到了錯誤 比如陣列下標越界,空指標等 程式就會自動終止,但這種錯誤一般是偶然的,可能是使用者輸入不呵呵程式編寫者的意圖導致,而不是程式本身問題,這是我們要做的,...