3 ms·
> Go doesn't even really force you to check your errors, it just makes it harder to accidentally not check them. Quite the opposite. You have to explicitly ign
by danielparks 7y ago
> Go doesn't even really force you to check your errors, it just makes it harder to accidentally not check them.
Quite the opposite. You have to explicitly ignore exceptions, whereas it’s easy to accidentally miss an error in Go. For example, how many times have you seen this?
defer f.Close()
Close() returns an error; this code ignores it.
- erik_seaberg 7y agoTo be fair, reporting that cleanup also failed with a different error is inherently complicated, and so many people got the try-finally version wrong that Java finally added try-with-resources and Throwable#addSuppressed.
- danielparks 7y agoDefinitely true. Mostly I just avoid using defer with Close, but I sometimes end up writing terrible stuff like: defer func() { err2 := f.Close() if err == nil { err = err2 } }() Not perfect, but better than nothing. I could use Wrapf to add information is err is already set. :-p