十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
golang中如何自定義錯(cuò)誤,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)主營(yíng)北票網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,北票h5微信小程序開發(fā)搭建,北票網(wǎng)站營(yíng)銷推廣歡迎北票等地區(qū)企業(yè)咨詢
在go里定義錯(cuò)誤異常的方式有這么兩種,但都需要你的返回值是error類型的。
func Control() error { //xxxx }
第一種方式是使用golang標(biāo)準(zhǔn)庫(kù)包errors 來(lái)定義錯(cuò)誤。使用方法很是簡(jiǎn)單,只需要 return errors.New(“string”) 。 這樣就是一個(gè)最簡(jiǎn)單的錯(cuò)誤返回。
第二種方式是借用struct結(jié)構(gòu)體,創(chuàng)建一個(gè)struct的Error()方法,注意這個(gè)方法名是Error,不然會(huì)出現(xiàn)下面的Bug, 找不到Error方法。
./er.go:25: cannot use equalError literal (type equalError) as type error in return argument: equalError does not implement error (missing Error method)
下面是一個(gè)比較完整的Error的使用方法。不僅有errors,還有struct Error()方式.
#http://xiaorui.cc package main import ( "errors" "fmt" ) type equalError struct { Num int } //方法名字是Error() func (e equalError) Error() string { return fmt.Sprintf("你現(xiàn)在是數(shù)字是 %d ,還是超了55", e.Num) } func Equal(n int) (int, error) { if n > 55 { return -1, errors.New("超過(guò)了55") //生成一個(gè)簡(jiǎn)單的 error 類型 } return n, nil } func DiyEqual(n int) (int, error) { if n > 55 { return -1, equalError{Num: n} // 會(huì)調(diào)用equalError的Error方法 } return n, nil } func main() { //使用errors.New生成error對(duì)象 if result, err := Equal(100); err != nil { fmt.Println("錯(cuò)誤:", err) } else { fmt.Println("結(jié)果:", result) } //不適用erros,自定義錯(cuò)誤方式. if result, err := DiyEqual(100); err != nil { fmt.Println("錯(cuò)誤:", err) } else { fmt.Println("結(jié)果:", result) } }
關(guān)于golang中如何自定義錯(cuò)誤問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。