猿问

如何找出 Go 标准库函数的可能错误值?

当调用返回错误的 Go 函数时,我想知道如何处理非 nil 错误值。我可以中止、记录它或将它传递给调用者。或者它们的组合。但如果我能找出问题所在并以更细粒度的方式做出反应,那就更好了。

因此,我如何才能找出可能的错误值及其含义?例如,我想使用该http.NewRequest功能。在文档中查找。在那里,它只是说有可能的错误条件而不是哪些。我怎样才能知道这些?


墨色风雨
浏览 167回答 1
1回答

幕布斯6054654

首先,如果你还没有读过,我建议你阅读这篇关于 Go 中的错误处理的博客文章,它可能会为你澄清一些事情。至于找出 Go stdlib 函数可能的错误值,如果没有明确记录,一种选择是阅读代码。例如,在http.NewRequest函数上,您可以单击标题,这会将您带到源代码。您现在可以看到,当 URL 解析失败时,它仅在一种情况下返回错误。探索该url.Parse函数,您将看到它可能返回url.Error,您可以使用类型断言进行检查:package mainimport (    "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) 并以适当的方式处理该事件(记录、返回等)。
随时随地看视频慕课网APP

相关分类

Go
我要回答