2
votes

Comment réparer l'avertissement de linter «La valeur de retour d'erreur n'est pas vérifiée»?

J'appelle la méthode avec une valeur de type d'erreur (foo () dans l'exemple de code). Je m'en fiche de ce résultat. Quelle est la bonne façon d'écrire dans le style de code? Errcheck linter me fait vérifier cette erreur.

//for example, same method may be called from imported entity
func foo() error {
   if err := someFunction(); err != nil {
       return err
   }
   return nil
}

func process() {
   //linter doesn't like this
   foo()

   //this way leads to unused variable error
   err := foo()

   //is this clean way?
   _ = foo()

  return 
}


0 commentaires

3 Réponses :


1
votes

Voici la manière idiomatique:

err := foo()
if err != nil {
  // handle your error here
}

Vous ne devez pas omettre une erreur possible. Enregistrez-le ou imprimez-le sur stdout, mais ne l'ignorez pas.


0 commentaires

4
votes

Oui, l'assigner à une variable générique serait un bon moyen d'ignorer l'erreur. Mais toute la pratique (d'ignorer les erreurs) est fortement déconseillée. Voici ce que "Effective Go" a à dire à ce sujet:

Parfois, vous verrez du code qui supprime la valeur d'erreur afin d'ignorer l'erreur; c'est une pratique terrible. Vérifiez toujours les retours d'erreur; ils sont fournis pour une raison.

   // Bad! This code will crash if path does not exist.
    fi, _ := os.Stat(path)
    if fi.IsDir() {
        fmt.Printf("%s is a directory\n", path)
    }


0 commentaires

1
votes

Idéalement, vous devriez gérer l'erreur, mais si cela vous ennuie, vous pouvez désactiver le linter, en goland (que vous devriez utiliser de toute façon):

 entrez la description de l'image ici


0 commentaires