亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何找出 Go 標準庫函數的可能錯誤值?

如何找出 Go 標準庫函數的可能錯誤值?

Go
墨色風雨 2021-12-07 18:51:00
當調用返回錯誤的 Go 函數時,我想知道如何處理非 nil 錯誤值。我可以中止、記錄它或將它傳遞給調用者?;蛘咚鼈兊慕M合。但如果我能找出問題所在并以更細粒度的方式做出反應,那就更好了。因此,我如何才能找出可能的錯誤值及其含義?例如,我想使用該http.NewRequest功能。在文檔中查找。在那里,它只是說有是可能的錯誤條件而不是哪些。我怎樣才能知道這些?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

首先,如果你還沒有讀過,我建議你閱讀這篇關于 Go 中的錯誤處理的博客文章,它可能會為你澄清一些事情。


至于找出 Go stdlib 函數可能的錯誤值,如果沒有明確記錄,一種選擇是閱讀代碼。例如,在http.NewRequest函數上,您可以單擊標題,這會將您帶到源代碼。您現在可以看到,當 URL 解析失敗時,它僅在一種情況下返回錯誤。探索該url.Parse函數,您將看到它可能返回url.Error,您可以使用類型斷言進行檢查:


package main


import (

    "log"

    "net/http"

    "net/url"

)


func main() {

    r, err := http.NewRequest("GET", "http://[fe80::%31%25en0]:8080/", nil)

    if perr, ok := err.(*url.Error); ok && perr != nil {

        log.Fatal("Parse error, check URL formatting: ", perr)

    } else if err != nil {

        log.Fatal("Error creating HTTP request")

    }


    // ... success case

    log.Println(r)

}

運行這個會給你解析錯誤,你可能想也可能不想在你的應用程序中以不同的方式處理:


2009/11/10 23:00:00 Parse error, check URL formatting: parse http://[fe80::%31%25en0]:8080/: percent-encoded characters in host

然而,我同意 JimB 的評論,在這種情況下專門檢查錯誤類型可能不是一件有用的事情。在 99.99% 的情況下,您只需要知道創建請求失敗 ( err != nil) 并以適當的方式處理該事件(記錄、返回等)。


查看完整回答
反對 回復 2021-12-07
  • 1 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號