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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確處理高浪中的網(wǎng)絡(luò)錯誤

如何正確處理高浪中的網(wǎng)絡(luò)錯誤

Go
MMMHUHU 2022-09-26 14:46:44
我不明白如何處理從網(wǎng)絡(luò)包接收的錯誤。我需要知道發(fā)生了什么類型的錯誤才能執(zhí)行下一步。嘗試解析錯誤消息字符串可能不是正確的方法...response, err := data.httpClient.Get("https://" + domain)if err != nil {                 fmt.Println("[!] error: ", err)    /*     *  I want something like this in pseudo code:    *  if error == DnsLookupError {    *      action1()    *  } else if error == TlsCertificateError {    *      action2()    *  } else if error == Timeout {    *      action3()    *  } ...    */}例如,我收到的錯誤消息:Get "https://example1.com": remote error: tls: internal errorGet "https://example2.com": dial tcp: lookup example2.cometc.
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個贊

您可以檢查錯誤是否與一些已知的錯誤類型兼容。我是這樣做的

func classifyNetworkError(err error) string {

    cause := err

    for {

        // Unwrap was added in Go 1.13.

        // See https://github.com/golang/go/issues/36781

        if unwrap, ok := cause.(interface{ Unwrap() error }); ok {

            cause = unwrap.Unwrap()

            continue

        }

        break

    }


    // DNSError.IsNotFound was added in Go 1.13.

    // See https://github.com/golang/go/issues/28635

    if cause, ok := cause.(*net.DNSError); ok && cause.Err == "no such host" {

        return "name not found"

    }


    if cause, ok := cause.(syscall.Errno); ok {

        if cause == 10061 || cause == syscall.ECONNREFUSED {

            return "connection refused"

        }

    }


    if cause, ok := cause.(net.Error); ok && cause.Timeout() {

        return "timeout"

    }


    return sprintf("unknown network error: %s", err)

}


查看完整回答
反對 回復(fù) 2022-09-26
  • 1 回答
  • 0 關(guān)注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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