在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO/ Go語言如何處理不同的錯誤

Go語言如何處理不同的錯誤

比如調(diào)用一個函數(shù)(假設(shè)此函數(shù)并不是你寫的,可能拋出多種錯誤信息)會可能返回錯誤信息?,F(xiàn)在普遍的做法是判斷err!=nil。
這樣只是知道有錯誤發(fā)生,不知道錯誤的具體類型。

我想根據(jù)不同的錯誤類型,去做不同的處理。應(yīng)該如何做呢?難道只能判斷錯誤的字符串?

回答
編輯回答
熟稔

一般包都暴露錯誤和錯誤類型
比如

package A

type ErrAwesome struct {
}

var (
     ErrAwe = &ErrAwesome{}
)

這樣就可以在你的代碼里

package B

_, err := A.Func()
//判斷錯誤
if err == ErrAwe {
}
//判斷錯誤類型
if _, ok := err.(ErrAwesome); ok {
}

反過來講,自己寫的包也該合理的暴露錯誤

2017年12月18日 16:08
編輯回答
何蘇葉

如果不是你寫的,沒什么好方法。
所以在設(shè)計庫的時候,如果有這方面的需求的話,就要自己設(shè)計 error 接口

2018年7月14日 11:14