> errors bubble upward through the call tree until they're handled. There's nothing simpler
Between
output_a := f1(input_a) // f1 throws exceptions on error output_b := f2(output_a) // f2 throws exceptions on error
output_a, err := f1(input_a) // inspect and deal with err output_b, err := f2(output_a) // inspect and deal with err
Exceptions make sense in a lot of contexts! Just not services, servers, or long-lived processes.
> errors bubble upward through the call tree until they're handled. There's nothing simpler
Between
and it seems uncontroversial to me that the latter is less complicated than the former, and easier to model control flow paths.Exceptions make sense in a lot of contexts! Just not services, servers, or long-lived processes.