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 关注
- 166 浏览
添加回答
举报