Golang combining errors

Viewed 6671

Lets say you have a simple function as so:

func create(path string) error {
        if err := ioutil.WriteFile(path, []byte{}, 0666); err != nil {
                return err
        }

        if err := os.Chmod(path, 0666); err != nil {
                _ = os.Remove(path)
                return err
        }

        return nil
}

I don't like ignoring the error out of Remove(). But I also don't want to swamp the error out of Chmod() and I don't want to leave the file since we didn't create() it successfully.

This is a simple example, and perhaps the function could be written differently to avoid this, but there are more complex situations that come up and this combining of errors I haven't seen mentioned in the golang community, so whats the idiom?

1 Answers
Related