我很难在Go中使用自定义错误类型.我阅读了关于错误的博客文章
所以我尝试了这个:
在我的模型中.我定义了一个自定义错误:
type ModelMissingError struct {
msg string // description of error
}
func (e *ModelMissingError) Error() string { return e.msg }
Run Code Online (Sandbox Code Playgroud)
在我的一个方法中,我抛出一个这样的自定义错误:
...
return Model{}, &ModelMissingError{"no model found for id"}
...
Run Code Online (Sandbox Code Playgroud)
在该方法的调用者中,我想检查为其类型返回的错误,如果它实际上是a,则采取措施ModelMissingError.
我怎样才能做到这一点?
我试过这个:
if err == model.ModelMissingError
Run Code Online (Sandbox Code Playgroud)
结果是 *type model.ModelMissingError is not an expression*
显然我错过了一些东西.
package main
import "net/http"
func main() {
req, err := http.NewRequest("GET", "http://domain_does_not_exist", nil)
if err != nil { panic("NewRequest") }
client := http.Client{ }
_, err = client.Do(req)
if err == ???
}
Run Code Online (Sandbox Code Playgroud)
我想检查我的 GET 请求是否有特定错误(DNS 解析错误)。如何做到这一点?