Méthode de manipulation correcte :
1 Lorsqu'il n'y a qu'une seule raison d'échec, n'utilisez pas d'erreur
Pour. exemple :
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) }
Nous pouvons voir qu'il n'y a qu'une seule raison pour l'échec de cette fonction, donc le type de la valeur de retour doit être booléen, pas une erreur. Refactorisez le code :
func (self *AgentContext) IsValidHostType(hostType string) bool { return hostType == "virtual_machine" || hostType == "bare_metal"}
. Explication : Dans la plupart des cas, le résultat Il y a plus d'une raison d'échec, en particulier pour les opérations d'E/S, les utilisateurs ont besoin de connaître plus d'informations sur l'erreur. À ce stade, le type de valeur de retour n'est plus un simple booléen, mais une erreur.
2. N'utilisez pas d'erreur lorsqu'il n'y a pas d'échec
L'erreur est si populaire dans Golang que beaucoup de gens ne se soucient de rien lors de la conception de fonctions. erreur même s'il n'y a aucune raison d'échec.
Jetons un coup d'œil à l'exemple de code :
func (self *CniParam) setTenantId() error { self.TenantId = self.PodNs return nil}
Pour la conception de fonction ci-dessus, il y aura le code d'appel suivant :
err := self.setTenantId() if err != nil { // log // free resource return errors.New(...) }
Refactorisez le code en fonction de notre correct posture :
func (self *CniParam) setTenantId() { self.TenantId = self.PodNs }
Ensuite, le code appelant devient :
self.setTenantId()
3 L'erreur doit être placée à la fin de la liste des types de valeurs de retour
Pour. le type de valeur de retour error , utilisé pour transmettre les informations d'erreur, généralement placé en dernier dans Golang.
resp, err := http.Get(url) if err != nil { return nill, err }
bool est le même que le type de valeur de retour.
value, ok := cache.Lookup(key) if !ok { // ...cache[key] does not exist… }
4. Lorsque les erreurs sont transmises couche par couche, des journaux sont ajoutés à chaque couche
Des journaux sont ajoutés à chaque couche pour faciliter la localisation des défauts.
Articles et tutoriels connexes recommandés : tutoriel golang
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!