我寫(xiě)了一個(gè)go程序來(lái)監(jiān)控一些MySQL數(shù)據(jù)庫(kù)。在下面的示例中,我只是顯示“連接成功!” 連接成功時(shí)顯示“連接錯(cuò)誤:”,失敗時(shí)顯示錯(cuò)誤消息。package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")func main() { err := mysqlConnect() if err != nil { fmt.Println("Connection Error:", err) } else { fmt.Println("Connection Success!") }}func mysqlConnect() error { db, err := sql.Open("mysql", "myuser:mypwd@tcp(10.2.0.3:3306)/mysql") if err != nil { return err } defer db.Close() err = db.Ping() if err != nil { return err } return nil}這按預(yù)期工作,但在某些情況下,執(zhí)行 db.Ping() 時(shí)會(huì)出現(xiàn)一些錯(cuò)誤消息并顯示到 stdErr:例如:$ go run main.go[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialogConnection Error: this authentication plugin is not supported最后一行是我預(yù)期的消息,但是調(diào)用 db.Ping() 時(shí)會(huì)顯示上一行。我想捕獲/隱藏此消息[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialog,因?yàn)槲乙呀?jīng)收到一條干凈的錯(cuò)誤消息,我可以按照我的意愿處理它(顯示或不顯示)。如何防止出現(xiàn)此類錯(cuò)誤消息(我的意思是在代碼中,而不是在調(diào)用時(shí))?
在 golang 中捕獲 stdErr 輸出
喵喵時(shí)光機(jī)
2023-07-04 19:13:44