想知道为什么 redigo 决定不导出 errorConn 类型,这将允许应用程序对连接失败进行特定的错误处理。实现后,应用程序必须将这些错误作为一般错误进行处理。例如,我们的应用程序通常不关心单个 PUT 是否失败,但如果问题是 Redis 连接失败或 redis 池耗尽,则继续执行下一个 PUT(特别是如果它需要打开新连接)是一个坏主意。我们应该停止并重试(使用指数退退),直到连接恢复。代码示例,其中 redigo 在连接池耗尽时返回一般错误
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
链接中的代码行返回两个相应类型的值:。(Conn, error)
if !p.Wait && p.MaxActive > 0 && p.active >= p.MaxActive {
p.mu.Unlock()
return errorConn{ErrPoolExhausted}, ErrPoolExhausted
}
类型是带有方法的接口。ConnErr
// Err returns a non-nil value when the connection is not usable.
Err() error
因此,要获取基础错误,您可以:
在第一个返回值上调用该方法;或Err
检查第二个返回值。error
作为旁注,比较错误的推荐方法是使用和/或来自标准库错误包。errors.Iserrors.As
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消
