登录
首页 >  Golang >  Go问答

过滤掉断管错误

来源:Golang技术栈

时间:2023-04-09 17:57:15 202浏览 收藏

大家好,今天本人给大家带来文章《过滤掉断管错误》,文中内容主要涉及到golang,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

error从一个调用中得到一个返回io.Copy,我已经将一个套接字 ( TCPConn) 作为目标传递给它。预计远程主机会在他们受够了之后简单地断开连接,而我没有收到他们的任何信息。

发生下降时,我收到此错误:

write tcp 192.168.26.5:21277: broken pipe

但我只有一个error界面。如何区分断管错误和其他类型的错误?

if err.Errno == EPIPE...

正确答案

损坏的管道错误在 syscall 包中定义。您可以使用相等运算符将错误与系统调用中的错误进行比较。检查http://golang.org/pkg/syscall/#constants以获取系统调用错误的完整列表。在页面上搜索“EPIPE”,您会发现所有已定义的错误组合在一起。

if err == syscall.EPIPE {
    /* ignore */
}

如果您希望获得实际的 errno 编号(尽管它非常无用),您可以使用类型断言:

if e, ok := err.(syscall.Errno); ok {
    errno = uintptr(e)
}

理论要掌握,实操不能落!以上关于《过滤掉断管错误》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表