GoFrame 框架設(shè)計(jì)-全錯(cuò)誤堆棧設(shè)計(jì)

2022-03-29 15:41 更新

一、項(xiàng)目錯(cuò)誤處理痛點(diǎn)

我們?cè)跇I(yè)務(wù)項(xiàng)目中,經(jīng)常會(huì)遇到以下痛點(diǎn)。

1、缺少統(tǒng)一錯(cuò)誤處理方案,代碼中隨處可見(jiàn)的日志打樁

為了方便接口出錯(cuò)時(shí)定位問(wèn)題,代碼中隨處可見(jiàn)的日志打樁,并將其看做是一件理所當(dāng)然的事,影響著后續(xù)項(xiàng)目維護(hù)的思路。

2、請(qǐng)求執(zhí)行報(bào)錯(cuò)后缺少錯(cuò)誤堆棧,難以快速定位問(wèn)題

如下,當(dāng)?shù)讓映霈F(xiàn)?error?級(jí)別的錯(cuò)誤時(shí),在頂層看到的就一個(gè)錯(cuò)誤信息,請(qǐng)問(wèn)如何排查?

image2022-1-23_20-25-40

3、第三方組件執(zhí)行返回的錯(cuò)誤,本身不帶有堆棧信息

不僅僅是第三方組件,連標(biāo)準(zhǔn)庫(kù)所有方法返回的?error?都不帶有堆棧,這對(duì)業(yè)務(wù)層統(tǒng)一錯(cuò)誤處理造成了很大的挑戰(zhàn)。幾乎所有業(yè)務(wù)層代碼調(diào)用返回的錯(cuò)誤,都需要使用類似于?Wrap?方法再包裹一層,以便于業(yè)務(wù)層自己可以實(shí)現(xiàn)錯(cuò)誤堆棧返回。這樣的維護(hù)成本比較大,幾乎只能靠?CodeReview?來(lái)人肉保障,一不小心可能會(huì)漏掉?Wrap?處理。

4、錯(cuò)誤組件多樣,自身項(xiàng)目往往還想當(dāng)然再封裝一層

錯(cuò)誤處理的第三方組件也比較多,如何選擇?甚至業(yè)務(wù)項(xiàng)目往往也想自己再封裝一層,進(jìn)一步提高錯(cuò)誤處理組件的維護(hù)成本。

二、框架全錯(cuò)誤堆棧設(shè)計(jì)

1、統(tǒng)一錯(cuò)誤組件

?GoFrame?框架提供了業(yè)內(nèi)功能最強(qiáng)大的錯(cuò)誤處理組件,并且該組件也是框架內(nèi)部廣泛使用的錯(cuò)誤組件,降低業(yè)務(wù)團(tuán)隊(duì)的選擇成本。

2、統(tǒng)一錯(cuò)誤處理方案

?GoFrame?框架提供了強(qiáng)大的工程設(shè)計(jì)規(guī)范,其中包含了必要的統(tǒng)一的錯(cuò)誤處理方案。按照統(tǒng)一框架的工程設(shè)計(jì),一些通用性的痛點(diǎn)已通過(guò)組件、工具的方式得以解決,使得業(yè)務(wù)團(tuán)隊(duì)能夠?qū)⒕劢褂跇I(yè)務(wù)本身,開(kāi)發(fā)將會(huì)事半功倍。

在統(tǒng)一的錯(cuò)誤處理方案下,項(xiàng)目中所有的方法調(diào)用將會(huì)以?error?返回值作為執(zhí)行成功與否的依據(jù)。如果?error?不為?nil?時(shí),及時(shí)返回,并將其層層往上傳遞,在最頂層統(tǒng)一做錯(cuò)誤處理。并且,在框架的關(guān)鍵組件已經(jīng)提供了默認(rèn)的錯(cuò)誤處理邏輯。

image2022-1-23_20-50-32

3、全組件支持堆棧錯(cuò)誤

?GoFrame?框架所有組件的?error?返回對(duì)象均帶有錯(cuò)誤堆棧!

這是一件很難做到的事情,因?yàn)榭蚣芴峁┑慕M件幾乎能夠覆蓋了大部分業(yè)務(wù)項(xiàng)目的所有需求,但是框架確實(shí)做到了。雖然框架在這塊投入的成本比較大,但卻是一次性投入、長(zhǎng)期收益的事情。這也就意味著,如果業(yè)務(wù)項(xiàng)目在統(tǒng)一的?GoFrame?基礎(chǔ)框架下,錯(cuò)誤處理將會(huì)更加簡(jiǎn)便,錯(cuò)誤堆棧丟失的風(fēng)險(xiǎn)得到了極大的降低,項(xiàng)目將會(huì)更加穩(wěn)健、易于快速排錯(cuò)。

4、關(guān)鍵組件支持錯(cuò)誤堆棧打印

在框架的關(guān)鍵組件中,提供了對(duì)錯(cuò)誤堆棧打印的默認(rèn)處理,以提高易用性,簡(jiǎn)化使用者負(fù)擔(dān)。這些關(guān)鍵的組件是程序的出口,如?HTTP/GRPC Server?、?Command?命令行。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)