我使用的conn.SetReadDeadline是设置读取超时的方法conn,当conn.Read等待超过指定的时间就会返回并返回一个类型的错误*net.OpError。net在包装所有非错误后,此错误由包返回io.EOF。
我可以在用Unwrap(). 超时错误是 类型的错误*poll.DeadlineExceededError。我在我的代码中使用这样的语句来精确处理超时错误。
import "internal/poll"
_, err = conn.Read(p)
if err != nil {
if pe, ok := err.(*net.OpError); ok {
err = pe.Unwrap()
if timeout, ok := err.(*poll.DeadlineExceededError); ok {
log.Error(fmt.Sprintf("%T, %s", timeout, timeout))
}
}
return
}
我在运行程序时收到use of internal package internal/poll not allowed错误消息。编译器告诉我不能使用内部包。
我用谷歌搜索并找到了删除internal文件夹的解决方案,这是最终解决方案吗?会有更好的解决方案吗?
叮当猫咪
相关分类