Skip to content

Instantly share code, notes, and snippets.

@ddgenome
Last active October 5, 2016 15:38
Show Gist options
  • Save ddgenome/118352ff4625d04a5b820ce3fcb3c7b0 to your computer and use it in GitHub Desktop.
Save ddgenome/118352ff4625d04a5b820ce3fcb3c7b0 to your computer and use it in GitHub Desktop.
Capture an error in a Go defer function
import (
"fmt"
"io/ioutil"
"os"
)
func f() (e error) {
tmpDir, tmpErr := ioutil.TempDir("", "prefix")
if tmpErr != nil {
return nil, tmpErr
}
defer func() {
if err := os.RemoveAll(tmpDir); err != nil {
if e != nil {
e = fmt.Errorf("%v; %v", e, err)
} else {
e = err
}
}
}()
// ...
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment