Go 2 Draft Designs
I&#x27;m disappointed the Java has given exceptions such a bad wrap that all new programming languages dance around them like crazy.  I understand Rust going with error returns due to it&#x27;s low-level nature but Go is pretty high level.<p>This semi-explicit error handling code optimizes for fairly trivial cases as very few real-world functions don&#x27;t have some kind of exception condition.  The difference between prefixing nearly every function with &quot;check&quot; vs. having that implicit is very small.<p>Proper use of exceptions puts the focus on where you can <i>handle</i> the error rather than where the error occurs.  Java screws this up with checked exceptions, which puts the all focus on error site, and programmers have subsequently determined (correctly) that checked exceptions are hardly better than error returns.<p>However, that is fundamentally the wrong way to look at error management.  If a method 17 levels deep on the call stack throws a network error, I shouldn&#x27;t have to care about those 17 levels because I&#x27;m going to restart the whole operation at the point I can do that.  The important part is not where the error is raised&#x2F;returned.