正確處理方法:
一、失敗的原因只有一個時,不使用error
##例如:func (self *AgentContext) CheckHostType(host_type string) error { switch host_type { case "virtual_machine": return nil case "bare_metal": return nil } return errors.New("CheckHostType ERROR:" + host_type) }
func (self *AgentContext) IsValidHostType(hostType string) bool { return hostType == "virtual_machine" || hostType == "bare_metal"}
二、沒有失敗時,不使用error
error在Golang中是如此的流行,以至於很多人設計函數時不管三七二十一都使用error,即使沒有失敗原因。 我們來看看範例程式碼:func (self *CniParam) setTenantId() error { self.TenantId = self.PodNs return nil}
err := self.setTenantId() if err != nil { // log // free resource return errors.New(...) }
func (self *CniParam) setTenantId() { self.TenantId = self.PodNs }
self.setTenantId()
三、error要放在回傳值類型清單的最後
對於傳回值類型error ,用來傳遞錯誤訊息,在Golang中通常放在最後一個。resp, err := http.Get(url) if err != nil { return nill, err }
value, ok := cache.Lookup(key) if !ok { // ...cache[key] does not exist… }
四、錯誤逐層傳遞時,層層都會加日誌
層層都加日誌非常方便故障定位。 相關文章教學推薦:以上是golang回傳錯誤時如何正確處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!