Errors should never pass silently
Unless explicitly silenced
The problem with go is that you have 3 error modes:1. Explicitly handle everything 2. Implicitly silence sometimes 3. Panic/recover explodes sometimes (who knows where/when?) Mode #2 is dangerous. Java/Python give you 2 only modes: 1. Implicitly explode on error. 2. Explicitly silence sometimes. Where both modes aren't inherently dangerous, i.e. they won't directly cause undefined states to execute. -------------------- Concerning the nesting in my examples - I'm used to the style of C programming where failing is mostly handled by a return as to keep the program as readable (and thus flat) as possible. So pardon my french but I assumed "// do something" would somehow prevent further usage of 'f'. Note that the Go example, although tedious, isn't bad in cases where you really do need to check every single possible error. |