A conversation - Java developer, idiomatic Go developer, FP developer
Developer | Says... |
Java | I do not like the way Go makes me handle errors after every function call. I want exception handling like this: try { Decrypt() Authenticate() Charge() } catch (Exception e) { // handle exception } However, after adding all those error checks, my code looks like this: err := Decrypt() if err != nil { return err } err = Authenticate() if err != nil { return err } Charge() Go error handling looks like a bunch of scaffolding obscuring my code's intentions. ![]() |
Go | As you know, Go does not support exception handling. Instead, you return errors to inform the calling function/method that something went wrong. You are supposed to handle an error as soon as possible. This is what we call the idiomatic way to handle errors. When you throw exceptions, how far up the call stack will your handler be? What if your exception gets handled before it reaches your global error handler? Will it stop or be rethrown... |