golang惯用的方法来检测没有这样的主机错误

时间:2017-01-16 04:31:17

标签: go

我正在使用它,但感觉不对:

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"
    }
}

是否有更惯用的方式?

2 个答案:

答案 0 :(得分:1)

我认为您可以使用DNSError类型而不是普通Error

err, ok := err.(net.DNSError)

答案 1 :(得分:0)

您可以使用此代码检查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)
        }
    }
}