我想確定網(wǎng)絡(luò)級別發(fā)生了什么樣的錯誤。我發(fā)現(xiàn)的唯一方法是使用正則表達(dá)式檢查錯誤消息,但現(xiàn)在我發(fā)現(xiàn)這些消息可以使用不同的語言(取決于操作系統(tǒng)配置),這使得正則表達(dá)式很難檢測到。有沒有更好的方法來做到這一點?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") }}結(jié)果:$ go run neterrors.goTimeoutUnknown hostConnection refused我在使用葡萄牙語作為默認(rèn)語言的 Windows 操作系統(tǒng)中測試系統(tǒng)時發(fā)現(xiàn)了這個問題。
檢測不同類型網(wǎng)絡(luò)錯誤的便攜式方法
慕標(biāo)琳琳
2021-07-29 17:06:18