我正在使用这个,但感觉不太对:
if err, ok := err.(net.Error); ok {
var message string
if err.Timeout() {
message = "Timeout"
} else if strings.HasSuffix(err.Error(), "no such host") {
message = "No such host"
}
}
有更通俗易懂的方法吗?
我正在使用这个,但感觉不太对:
if err, ok := err.(net.Error); ok {
var message string
if err.Timeout() {
message = "Timeout"
} else if strings.HasSuffix(err.Error(), "no such host") {
message = "No such host"
}
}
截至Go 1.13版本: 您可以使用errors.As或errors.Is
var dnsError *net.DNSError
if errors.As(err, &dnsError) {
fmt.Println("DNS Error", dnsError)
}
翻译后的答案:
您可以使用此代码检查 DNS 错误。例如,如果err是我们的错误:
if err, ok := err.(*url.Error); ok {
if err, ok := err.Err.(*net.OpError); ok {
if _, ok := err.Err.(*net.DNSError); ok {
retry(r)
}
}
}
err.(*net.DNSError)
。DNSError类型总是通过地址返回(当将对象存储在接口中时,通常应该这样做),因此类型断言err.(net.DNSError)
将始终失败。 - Kaedysfmt.Println(reflect.TypeOf(err))
- darxtrix