gpt4 book ai didi

go - 如何检查 Go 中的特定网络错误?

转载 作者:IT王子 更新时间:2023-10-29 01:43:11 31 4
gpt4 key购买 nike

我有一个正在编写的服务器,我想处理来自 conn.Read() 的错误。具体来说,我想在客户端关闭连接的情况下什么都不做,但如果是任何其他错误则记录错误。我遇到了以下问题:

  1. 文档似乎没有说明 conn.Read() 可以返回什么错误。
  2. Connection-closed-by-client 似乎是 EOF 错误。原来它的类型是 error.errorString。认真的吗?

所以基本上我必须与“EOF”进行字符串比较,以判断我的错误是预期的还是真正的错误?!?我错过了什么吗?因为目前这似乎是一个巨大的疏忽......

最佳答案

嗯,不,它是 string 因为 it's defined作为

import "errors"
...
var EOF = errors.New("EOF")

errors.New(string) 返回的实际上是一个可转换为 string 的类型,因为该类型 errorString仅仅嵌入一个你传递给 error.New(string) 的字符串,其唯一目的是在其上定义 Error() string 方法——以满足 错误接口(interface)。

但是您可以像这样测试这个特定的错误(文件结尾):

import "io"
...
if err == io.EOF {
...

也就是说,您不是在比较字符串,而是比较某个库模块(在本例中为“io”)导出的众所周知的变量的地址。

关于go - 如何检查 Go 中的特定网络错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883937/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com