3 ms·
Also, Go gets this right with "defer", and with mostly deterministic error handling (panicking is not the normal way to signal an error, returning a status is).
by JulianMorrison 16y ago
Also, Go gets this right with "defer", and with mostly deterministic error handling (panicking is not the normal way to signal an error, returning a status is).
- munificent 16y agoThat just pushes the problem around. You don't have to worry about forgetting to catch an exception, you have to worry about ignoring an error code.
- JulianMorrison 16y agoGo's multiple return at least makes that simpler than C, you don't have to remember to check a global error code, and there are no magic return codes multiplexed with the expected response. But the fundamental difference is that if you have code that does a() b() c() then you can guarantee that a() will be executed, then b(), then c(). And if there are any branches in case of errors, they will be explicit. Exceptions surround every statement with the possibility of an unannounced exit.
- edsrzf 16y agoYes, but it's much easier to recognize ignored error codes than ignored exceptions: http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/35294... In Go, it's even easier to recognize ignored error codes because you tend to have fewer levels of indentation and sometimes an explicit "_" when you're discarding a return value.