1 回答

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) 并以適當的方式處理該事件(記錄、返回等)。
- 1 回答
- 0 關注
- 204 瀏覽
添加回答
舉報