我想確定網絡級別發生了什么樣的錯誤。我發現的唯一方法是使用正則表達式檢查錯誤消息,但現在我發現這些消息可以使用不同的語言(取決于操作系統配置),這使得正則表達式很難檢測到。有沒有更好的方法來做到這一點?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 回答
- 0 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消