The new try() proposal is counter to the core principles of the Go language,
specifically software engineering in the large. The proposal’s stated goal is to
reduce the tediousness around handling errors. I believe, that in actuality, it
would reduce explicitness, increase complexity, and hinder large teams on large code bases.
try() removes the shape of current error handling, the if != nil
pattern of
error checking and replaces it with a single builtin function, that can be
nested. Using try() would remove the visual pattern that if != nil
imprints
on our code. We now would have to focus more as we read a block of
code, paying special attention to any nested try() statements, to build our
mental model of the functionality we are reviewing. The possible patterns we
need to scan for has now doubled.