亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何獲取要在錯誤處理中使用的錯誤類型

如何獲取要在錯誤處理中使用的錯誤類型

Go
大話西游666 2022-09-19 14:46:25
如果您這樣做:_, err := http.Get("google.com")if err != nil {    log.Fatal(err)}你得到的輸出:2021/08/05 15:42:18 Get "google.com": unsupported protocol scheme ""我想知道如何獲取錯誤類型,以便我可以像這樣處理錯誤:if errors.Is(err, "unsupported protocol scheme") {    //add protocol scheme to url string}我試過 fmt。Printf(“%#v”,錯誤),它給出了:&url.Error{Op:"Get", URL:"google.com", Err:(*errors.errorString)(0xc000098c40)}斷續器打?。ā?T”)給出:*url.Error編輯:如果你投了反對票,我非常感謝你的想法。
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

var e *url.Error

if errors.As(err, &e) && strings.HasPrefix(e.Err.Error(), "unsupported protocol scheme") {

    //add protocol scheme to url string

}

https://play.golang.org/p/VKpMfrBp_EF


請注意,與非標準化字符串的比較不應被視為面向未來的。例如,如果 Go 的未來版本決定更改該錯誤消息的措辭,則您的代碼將中斷。


雖然Go確實承諾跨版本兼容,但我不認為這個承諾延伸到字符串內容。


查看完整回答
反對 回復 2022-09-19
?
森欄

TA貢獻1810條經驗 獲得超5個贊

可用于返回字符串。并檢查它是否包含一個辣鍵,如下所示:err.Error()


if err = db.Ping(); err != nil {

    switch {

    case strings.Contains(err.Error(), "connection refused"):

         // handle connection refused. for example:

         cmd := exec.Command("sudo", "service", "mariadb", "start")          

         _ = cmd.Run()

       

    default:

         log.Println("unknown kind of this error", err)

    }

}

在你的情況下,你可以嘗試這樣的事情:


err := http.Get(url)


if strings.Contains(err.Error(), "unsupported protocol scheme") {

    //add protocol scheme to url string

}


查看完整回答
反對 回復 2022-09-19
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號