简体   繁体   中英

How to fix linter warning `Error return value is not checked`?

I'm calling the method with error type value (foo() in code example). I don't care this result. What's the rigth code style way to write? Errcheck linter makes me check this error.

//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 
}

Yes, assigning it to a wildcard variable would be a good way to ignore the error. But the whole practice (of ignoring errors) is strongly discouraged. Here's what "Effective Go" has to say about this:

Occasionally you'll see code that discards the error value in order to ignore the error; this is terrible practice. Always check error returns; they're provided for a reason.

  // 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) } 

This is the idiomatic way:

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

You should not omit a possible error. Log it or print it to stdout, but do not ignore it.

Ideally you should handle the error but if it annoys you, you could turn off the linter, in goland (which you should be using anyway):

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM