Remix.run Logo
adontz 5 days ago

Honestly, this is so much worse than "catch". It's what a "catch" would look like in "C".

hambes 5 days ago | parent | next [-]

It might look worse than catch, but it's much more predictable and less goto-y.

guappa 5 days ago | parent | next [-]

goto was only bad when used to save code and jump indiscriminately. To handle errors is no problem at all.

froh 5 days ago | parent | next [-]

yes, yes, yes! see the Linux Kernel for plenty of such good and readable uses of go-to, considered useful: "on error, jump there in the cleanup sequence ..."

_flux 5 days ago | parent | prev [-]

..as long as you don't make mistakes. I fixed enough goto bugs in Xorg when I was fixing Coverity-issues in Xorg that I can see the downsides of this easy way of error handling.

guappa 4 days ago | parent [-]

We're comparing to go here, not with a language with proper error handling.

int_19h 4 days ago | parent | prev [-]

If "catch" is goto-y (and it kinda is), then so is "defer".

kbolino 5 days ago | parent | prev [-]

The biggest difference between try-catch and error values syntactically IMO is that the former allows you to handle a specific type of error from an unspecified place and the latter allows you to handle an unspecified type of error from a specific place. So the type checking is more cumbersome with error values whereas enclosing every individual source of exceptions in its own try-catch block is more cumbersome than error values. You usually don't do that, but you usually don't type-check error values either.