想知道為什么 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 關注
- 87 瀏覽
添加回答
舉報
0/150
提交
取消