第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在返回錯(cuò)誤之前收集盡可能多的信息

如何在返回錯(cuò)誤之前收集盡可能多的信息

Go
人到中年有點(diǎn)甜 2022-06-01 16:01:43
func About(c echo.Context) error {        about := newInfo()        memory, err := getMemory()        if err != nil {                log.Errorf("Failed to get memory %v", err)                return err        }        about.SystemInfo["memory"] = memory        version, err := getVersion()        if err != nil {                log.Errorf("Failed to get version details %v", err)                return err        }        about.Version = version        serialNo ,err= getSerialInfo()        if err != nil{                log.Errorf("Failed to get Product code %v", err)                return err        }        about.SerialNo = serialNo        network, err := localAddress()        if err != nil {                log.Errorf("Failed to get Network details %v", err)                return err        }        about.Network = network        return c.JSON(http.StatusOK, about)}這是我的一個(gè) http 端點(diǎn),當(dāng) /about 請(qǐng)求到來時(shí),我將重定向到這個(gè)函數(shù)。我正在嘗試獲取一些與系統(tǒng)相關(guān)的信息。我想要做的是,我想收集盡可能多的信息并在最后返回錯(cuò)誤。例如,如果內(nèi)存返回錯(cuò)誤,而不是直接返回錯(cuò)誤,我想先執(zhí)行代碼并獲取所有信息。堅(jiān)持如何做到這一點(diǎn)。
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

您不需要立即返回錯(cuò)誤,只需檢查最后的所有錯(cuò)誤并返回自定義錯(cuò)誤,或者您可以返回 @Marc 提到的最后一個(gè)錯(cuò)誤


 func About(c echo.Context) error {

        about := newInfo()

        memory, errMemory := getMemory()

        if errMemory != nil {

                log.Errorf("Failed to get memory %v", errMemory)

        } else {

          about.SystemInfo["memory"] = memory

        }


        version, errVersion := getVersion()

        if errVersion != nil {

                log.Errorf("Failed to get version details %v", errVersion)

        } else {

          about.Version = version

        }


        serialNo ,errSerial= getSerialInfo()

        if errSerial != nil{

                log.Errorf("Failed to get Product code %v", errSerial)

        } else {

          about.SerialNo = serialNo

        }


        network, errNet := localAddress()

        if errNet != nil {

                log.Errorf("Failed to get Network details %v", errNet)

        } else {

          about.Network = network

        }


        if errNet != nil || errSerial != nil || errVersion != nil || errMemory != nil  {

          // return a custom error, here

        }

        return c.JSON(http.StatusOK, about)

}


查看完整回答
反對(duì) 回復(fù) 2022-06-01
?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

非致命錯(cuò)誤的一種簡(jiǎn)單解決方案(即:可以繼續(xù)的錯(cuò)誤)是保存最后一個(gè)非零錯(cuò)誤。


例如:


var lastErr err

mem, err := ....

if err != nil {

  // Overwrite lastErr only if an error was encountered.

  lastErr = err

}


version, err := ...

if err != nil {

  lastErr = err

}

在函數(shù)結(jié)束時(shí),隨意返回lastErr。

該主題的其他變體包括:

  • firstErr(如果不是,請(qǐng)不要覆蓋nil

  • 一片錯(cuò)誤(為每個(gè)非零錯(cuò)誤附加到它)

  • 更結(jié)構(gòu)化:將錯(cuò)誤與您返回的數(shù)據(jù)一起保存。即:有一個(gè)about.Errors []error字段,甚至每個(gè)操作都有一個(gè)字段:about.Errors map[string]error并保存每個(gè)錯(cuò)誤:about.Errors["memory"] = errFromMemoryLookup

如果您想了解錯(cuò)誤以及實(shí)際信息,您可能應(yīng)該使用最后一個(gè)。


查看完整回答
反對(duì) 回復(fù) 2022-06-01
  • 2 回答
  • 0 關(guān)注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)