我想确定网络级别发生了什么样的错误。我发现的唯一方法是使用正则表达式检查错误消息,但现在我发现这些消息可以使用不同的语言(取决于操作系统配置),这使得正则表达式很难检测到。有没有更好的方法来做到这一点?package mainimport ( "github.com/miekg/dns" "net" "regexp")func main() { var c dns.Client m := new(dns.Msg) m.SetQuestion("3com.br.", dns.TypeSOA) _, _, err := c.Exchange(m, "ns1.3com.com.:53") checkErr(err) m.SetQuestion("example.com.", dns.TypeSOA) _, _, err = c.Exchange(m, "idontexist.br.:53") checkErr(err) m.SetQuestion("acasadocartaocuritiba.blog.br.", dns.TypeSOA) _, _, err = c.Exchange(m, "ns7.storedns22.in.:53") checkErr(err)}func checkErr(err error) { if err == nil { println("Ok") } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { println("Timeout") } else if match, _ := regexp.MatchString(".*lookup.*", err.Error()); match { println("Unknown host") } else if match, _ := regexp.MatchString(".*connection refused.*", err.Error()); match { println("Connection refused") } else { println("Other error") }}结果:$ go run neterrors.goTimeoutUnknown hostConnection refused我在使用葡萄牙语作为默认语言的 Windows 操作系统中测试系统时发现了这个问题。
1 回答
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消