\1. 【強(qiáng)制】錯(cuò)誤碼的制定原則:快速溯源、溝通標(biāo)準(zhǔn)化。
- 說(shuō)明: 錯(cuò)誤碼想得過(guò)于完美和復(fù)雜,就像康熙字典中的生僻字一樣,用詞似乎精準(zhǔn),但是字典不容易隨身攜帶并且簡(jiǎn)單易懂。
- 正例:錯(cuò)誤碼回答的問(wèn)題是誰(shuí)的錯(cuò)?錯(cuò)在哪?
1)錯(cuò)誤碼必須能夠快速知曉錯(cuò)誤來(lái)源,可快速判斷是誰(shuí)的問(wèn)題。
2)錯(cuò)誤碼必須能夠進(jìn)行清晰地比對(duì)(代碼中容易
equals
)。
3)錯(cuò)誤碼有利于團(tuán)隊(duì)快速對(duì)錯(cuò)誤原因達(dá)到一致認(rèn)知。
\2. 【強(qiáng)制】錯(cuò)誤碼不體現(xiàn)版本號(hào)和錯(cuò)誤等級(jí)信息。
- 說(shuō)明:錯(cuò)誤碼以不斷追加的方式進(jìn)行兼容。錯(cuò)誤等級(jí)由日志和錯(cuò)誤碼本身的釋義來(lái)決定。
\3. 【強(qiáng)制】全部正常,但不得不填充錯(cuò)誤碼時(shí)返回五個(gè)零:00000。
\4. 【強(qiáng)制】錯(cuò)誤碼為字符串類(lèi)型,共 5 位,分成兩個(gè)部分:錯(cuò)誤產(chǎn)生來(lái)源+四位數(shù)字編號(hào)。
- 說(shuō)明:錯(cuò)誤產(chǎn)生來(lái)源分為 A/B/C,A 表示錯(cuò)誤來(lái)源于用戶(hù),比如參數(shù)錯(cuò)誤,用戶(hù)安裝版本過(guò)低,用戶(hù)支付超時(shí)等問(wèn)題;B 表示錯(cuò)誤來(lái)源于當(dāng)前系統(tǒng),往往是業(yè)務(wù)邏輯出錯(cuò),或程序健壯性差等問(wèn)題;C 表示錯(cuò)誤來(lái)源于第三方服務(wù),比如 CDN 服務(wù)出錯(cuò),消息投遞超時(shí)等問(wèn)題;四位數(shù)字編號(hào)從 0001 到 9999,大類(lèi)之間的步長(zhǎng)間距預(yù)留 100,參考文末附表 3。
\5. 【強(qiáng)制】編號(hào)不與公司業(yè)務(wù)架構(gòu),更不與組織架構(gòu)掛鉤,以先到先得的原則在統(tǒng)一平臺(tái)上進(jìn)行,審批生效,編號(hào)即被永久固定。
\6. 【強(qiáng)制】錯(cuò)誤碼使用者避免隨意定義新的錯(cuò)誤碼。
- 說(shuō)明:盡可能在原有錯(cuò)誤碼附表中找到語(yǔ)義相同或者相近的錯(cuò)誤碼在代碼中使用即可。
\7. 【強(qiáng)制】錯(cuò)誤碼不能直接輸出給用戶(hù)作為提示信息使用。
- 說(shuō)明:堆棧(
stack_trace
)、錯(cuò)誤信息(error_message
)、錯(cuò)誤碼(error_code
)、提示信息(user_tip
)是一個(gè)有效關(guān)聯(lián)并互相轉(zhuǎn)義的和諧整體,但是請(qǐng)勿互相越俎代庖。
\8. 【推薦】錯(cuò)誤碼之外的業(yè)務(wù)獨(dú)特信息由 error_message
來(lái)承載,而不是讓錯(cuò)誤碼本身涵蓋過(guò)多具體業(yè)務(wù)屬性。
\9. 【推薦】在獲取第三方服務(wù)錯(cuò)誤碼時(shí),向上拋出允許本系統(tǒng)轉(zhuǎn)義,由 C 轉(zhuǎn)為 B,并且在錯(cuò)誤信息上帶上原有的第三方錯(cuò)誤碼。
10.【參考】錯(cuò)誤碼分為一級(jí)宏觀錯(cuò)誤碼、二級(jí)宏觀錯(cuò)誤碼、三級(jí)宏觀錯(cuò)誤碼。
- 說(shuō)明:在無(wú)法更加具體確定的錯(cuò)誤場(chǎng)景中,可以直接使用一級(jí)宏觀錯(cuò)誤碼,分別是:A0001(用戶(hù)端錯(cuò)誤)、B0001(系統(tǒng)執(zhí)行出錯(cuò))、C0001(調(diào)用第三方服務(wù)出錯(cuò))。
- 正例:調(diào)用第三方服務(wù)出錯(cuò)是一級(jí),中間件錯(cuò)誤是二級(jí),消息服務(wù)出錯(cuò)是三級(jí)。
11.【參考】錯(cuò)誤碼的后三位編號(hào)與 HTTP 狀態(tài)碼沒(méi)有任何關(guān)系。
12.【參考】錯(cuò)誤碼有利于不同文化背景的開(kāi)發(fā)者進(jìn)行交流與代碼協(xié)作。
- 說(shuō)明:英文單詞形式的錯(cuò)誤碼不利于非英語(yǔ)母語(yǔ)國(guó)家(如阿拉伯語(yǔ)、希伯來(lái)語(yǔ)、俄羅斯語(yǔ)等)之間的開(kāi)發(fā)者互相協(xié)作。
13.【參考】錯(cuò)誤碼即人性,感性認(rèn)知+口口相傳,使用純數(shù)字來(lái)進(jìn)行錯(cuò)誤碼編排不利于感性記憶和分類(lèi)。
- 說(shuō)明:數(shù)字是一個(gè)整體,每位數(shù)字的地位和含義是相同的。
- 反例:一個(gè)五位數(shù)字 12345,第 1 位是錯(cuò)誤等級(jí),第 2 位是錯(cuò)誤來(lái)源,345 是編號(hào),人的大腦不會(huì)主動(dòng)地拆開(kāi)并分辨每位數(shù)字的不同含義。
更多建議: