Java開發(fā) 錯誤碼

2021-03-23 10:54 更新

\1. 【強制】錯誤碼的制定原則:快速溯源、溝通標準化。

  • 說明: 錯誤碼想得過于完美和復雜,就像康熙字典中的生僻字一樣,用詞似乎精準,但是字典不容易隨身攜帶并且簡單易懂。

  • 正例:錯誤碼回答的問題是誰的錯?錯在哪? 1)錯誤碼必須能夠快速知曉錯誤來源,可快速判斷是誰的問題。 2)錯誤碼必須能夠進行清晰地比對(代碼中容易 equals)。 3)錯誤碼有利于團隊快速對錯誤原因達到一致認知。

\2. 【強制】錯誤碼不體現(xiàn)版本號和錯誤等級信息。

  • 說明:錯誤碼以不斷追加的方式進行兼容。錯誤等級由日志和錯誤碼本身的釋義來決定。

\3. 【強制】全部正常,但不得不填充錯誤碼時返回五個零:00000。

\4. 【強制】錯誤碼為字符串類型,共 5 位,分成兩個部分:錯誤產(chǎn)生來源+四位數(shù)字編號。

  • 說明:錯誤產(chǎn)生來源分為 A/B/C,A 表示錯誤來源于用戶,比如參數(shù)錯誤,用戶安裝版本過低,用戶支付超時等問題;B 表示錯誤來源于當前系統(tǒng),往往是業(yè)務邏輯出錯,或程序健壯性差等問題;C 表示錯誤來源于第三方服務,比如 CDN 服務出錯,消息投遞超時等問題;四位數(shù)字編號從 0001 到 9999,大類之間的步長間距預留 100,參考文末附表 3。

\5. 【強制】編號不與公司業(yè)務架構(gòu),更不與組織架構(gòu)掛鉤,以先到先得的原則在統(tǒng)一平臺上進行,審批生效,編號即被永久固定。

\6. 【強制】錯誤碼使用者避免隨意定義新的錯誤碼。

  • 說明:盡可能在原有錯誤碼附表中找到語義相同或者相近的錯誤碼在代碼中使用即可。

\7. 【強制】錯誤碼不能直接輸出給用戶作為提示信息使用。

  • 說明:堆棧(stack_trace)、錯誤信息(error_message)、錯誤碼(error_code)、提示信息(user_tip)是一個有效關(guān)聯(lián)并互相轉(zhuǎn)義的和諧整體,但是請勿互相越俎代庖。

\8. 【推薦】錯誤碼之外的業(yè)務獨特信息由 error_message 來承載,而不是讓錯誤碼本身涵蓋過多具體業(yè)務屬性。

\9. 【推薦】在獲取第三方服務錯誤碼時,向上拋出允許本系統(tǒng)轉(zhuǎn)義,由 C 轉(zhuǎn)為 B,并且在錯誤信息上帶上原有的第三方錯誤碼。

10.【參考】錯誤碼分為一級宏觀錯誤碼、二級宏觀錯誤碼、三級宏觀錯誤碼。

  • 說明:在無法更加具體確定的錯誤場景中,可以直接使用一級宏觀錯誤碼,分別是:A0001(用戶端錯誤)、B0001(系統(tǒng)執(zhí)行出錯)、C0001(調(diào)用第三方服務出錯)。

  • 正例:調(diào)用第三方服務出錯是一級,中間件錯誤是二級,消息服務出錯是三級。

11.【參考】錯誤碼的后三位編號與 HTTP 狀態(tài)碼沒有任何關(guān)系。

12.【參考】錯誤碼有利于不同文化背景的開發(fā)者進行交流與代碼協(xié)作。

  • 說明:英文單詞形式的錯誤碼不利于非英語母語國家(如阿拉伯語、希伯來語、俄羅斯語等)之間的開發(fā)者互相協(xié)作。

13.【參考】錯誤碼即人性,感性認知+口口相傳,使用純數(shù)字來進行錯誤碼編排不利于感性記憶和分類。

  • 說明:數(shù)字是一個整體,每位數(shù)字的地位和含義是相同的。

  • 反例:一個五位數(shù)字 12345,第 1 位是錯誤等級,第 2 位是錯誤來源,345 是編號,人的大腦不會主動地拆開并分辨每位數(shù)字的不同含義。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號