您好,登錄后才能下訂單哦!
本篇內容主要講解“Java健壯性的方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java健壯性的方法有哪些”吧!
一、進行統一的業務處理響應
根據螞蟻金服開放平臺的標準返回,一個 response 至少應當有4個返回值。
1、isSuccess 調用是否成功
2、data 返回的響應數據
3、errorCode 錯誤碼
4、errorMsg 錯誤信息
這就要求我們的接口要有標準的統一的 response ,那怎么實現呢?
1、Spring 切面, JDK 動態代理,Cglib 動態代理等用代理類實現
2、匿名子類,使用一個公共的 Executor 來負責處理所有的請求。
上面兩種模式都可以實現標準的 response 的封裝,那么具體要封裝哪些東西呢?其實最主要的就是統一的 try catch,防止出現任何的 500 錯誤給到調用方。
------ 為什么要在最外層去完成呢?------
因為 500 錯誤對于調用方來說是致命而且是毫無價值的,無論調用方是前端還是其他的業務系統
------ 設定統一的錯誤碼 ------
如
參數錯誤 PARAMETER_ERROR
數據庫錯誤 DATABASE_ERROR
外部系統錯誤 OUTER_SYSTEM_ERROR
如果有了上面的這些錯誤碼以及錯誤信息,業務方至少可以告知用戶究竟發生了什么事,也可以設定一些列的告警以及自動化運維的方式來處理這些錯誤。
二、參數檢查
在進行真正的邏輯處理前,應當對入參進行一系列的校驗,以保持后續業務處理邏輯的輕量,這也是 fast fail 思想的指導,有錯誤盡早結束處理。
具體是怎樣的呢?我們假設參數為 m.
if( null == m ){return ;}
進行空判斷,防止后續滴啊用m發生 NullPointerException,但這里也不建議拋出NPE,因為看到日志也會很迷惑。
if( StringUtils.isEmpty( m ) ){return ;}
字符串是否為空串
if( CollectionUtils.isEmpty.isEmpty( m ) ){return ;}
集合是否為空或者null
try{
JSON.parseObject( m );
return true;
}
catch(JSONExceptin e){
return false;
}
判斷字符串是否為 JSON 格式
三、重試機制
對于特定的外部系統錯誤,可以嘗試多次重試這種策略,當然這也是簡歷在對方的服務是冪等的前提下。這樣做在某些網絡不穩定的情況下可以提高響應成功率。
四、冪等機制
什么叫冪等?意思就是 無論何時何處何人,只要是先攻的請求,就應當有相同的響應,直到到達終態。
這個原則并不關注上一次的執行結果,企鵝本次結果不應當因為上一次請求的部分成功或者失敗而導致某些中間狀態不一致導致請求失敗。
五、Lambda
Optionl.of( target )
.getOrElse( new ArrayList() )
.filter( Object::NotNull)
.forEach( () -> {} )
這種寫法可以確保絕大部分的異常不出現,特別是在對于集合進行處理的時候,因為集合中只要有其中一個值是會導致程序失敗的,整個程序都會報錯。這樣寫因為對數據做了比較多的檢查和兼容,所以出現錯誤的概率會比較低,但也會有一個弊端,就是當這樣的程序都出現異常的時候,開發者一般不知從何查起,要定位出是哪行數據就已經很費勁了。
到此,相信大家對“Java健壯性的方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。