第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 go-sql-driver 時如何區(qū)分連接錯誤和其他錯誤

使用 go-sql-driver 時如何區(qū)分連接錯誤和其他錯誤

Go
Smart貓小萌 2021-12-07 16:43:14
func mainloop(db *sql.DB) {        type pushTask struct {            TaskId string            Uri    string        }        stmt, err := db.Prepare("INSERT INTO ErrPushCache(TaskId, Uri) VALUES(?, ?)")        if err != nil {            log.Fatal("db.Prepare Failed ", err)        }        var (            mysqlOk bool = true            task    pushTask        )        for {            task.TaskId = RandStringRunes(8)            task.Uri = RandStringRunes(16)            res, err := stmt.Exec(task.TaskId, task.Uri)            if err != nil {                if err == driver.ErrBadConn {                    if mysqlOk {                        log.Print("Connection with mysql seems down, %s", err.Error())                        mysqlOk = false                        os.Exit(1)                    }                } else {                    log.Print("Exec failed ", err)                }                time.Sleep(2 * time.Second)                continue            }            if !mysqlOk {                log.Print("Connection with mysql is ok now")                mysqlOk = true            }            lastId, err := res.LastInsertId()            if err != nil {                log.Print("LastInsertId failed ", err)            }            rowCnt, err := res.RowsAffected()            if err != nil {                log.Print("RowsAffected failed ", err)            }            log.Printf("ID = %d, affected = %d\n", lastId, rowCnt)            time.Sleep(20 * time.Second)        }    }在mainloop函數(shù)中,如果mysql和客戶端的連接斷開,stmt.Exec就會失敗,會返回一個錯誤,我如何區(qū)分連接錯誤和其他錯誤。(err == driver.ErrBadConn總是false)。如果連接中斷,則日志為:2016/01/29 17:21:31 Exec 撥號 tcp 192.168.1.61:3306 失敗:getsockopt:連接被拒絕 2016/01/29 17:21:33 Exec 撥號 tcp 192.168.1.61:3016 連接被拒絕失敗01/29 17:21:35 Exec 撥號 tcp 192.168.1.61:3306 失?。篻etsockopt:連接被拒絕 2016/01/29 17:21:37 Exec 撥號 tcp 192.168.1.61:3306 失敗:getsockopt/getsockopt/連接被拒絕29 17:21:39 Exec 撥號 tcp 192.168.1.61:3306 失?。篻etsockopt:連接被拒絕
查看完整描述

2 回答

?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個贊

網(wǎng)絡(luò)錯誤將是滿足net.Error接口的類型。


if err, ok := err.(net.Error); ok {

    log.Println("network error:", err)

} else {

    log.Println("other error:", err)

}

在大多數(shù)情況下,這并不重要,因?yàn)椴僮饔捎谀撤N原因失敗了,無論如何您都需要處理它。只有當(dāng)您想根據(jù)您真正需要檢查的網(wǎng)絡(luò)錯誤采取不同的操作時。


查看完整回答
反對 回復(fù) 2021-12-07
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個贊

這就是 go 的錯誤處理真正困擾我的地方。大多數(shù)情況下,實(shí)際的錯誤類型都沒有記錄,因此您必須查看源代碼并檢查代碼可以返回哪些錯誤。在某些情況下,這些只是一般的字符串錯誤,因?yàn)榇a是特定于平臺的,因此,錯誤也是特定于平臺的。

您可以這樣做,檢查源代碼,或者您可以打印錯誤類型以確切知道它是哪一種。

log.Printf("%T", err)


查看完整回答
反對 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號