this post was submitted on 13 Sep 2024
60 points (86.6% liked)

Programming

17670 readers
281 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 26 points 3 months ago (1 children)

The guy keeps on picking on Go, which is infamous for having terrible error handling, and then he has the nerve to even pick on the UNIX process return convention, which was designed in the 70s.
The few times he mentions Rust, for whatever reason he keeps on assuming that .unwrap() is the only choice, which's use is decidedly discouraged in production code.

I do think there is room for debate here. But error handling is a hellishly complex topic, with different needs between among others:

  • short- vs. long-running processes
  • API vs. user-facing
  • small vs. big codebase
  • library vs. application code
  • prototyping vs. production phase

And even if you pick out a specific field, the two concepts are not clearly separated.
Error values in Rust usually have backtraces these days, for example (unless you're doing embedded where this isn't possible).
Or Java makes you list exceptions in your function signature (except for unchecked exceptions), so you actually can't just start throwing new exceptions in your little corner without the rest of the codebase knowing.
I find it quite difficult to properly define the differences between the two.

[–] qaz 2 points 3 months ago* (last edited 3 months ago) (1 children)

I find it quite difficult to properly define the differences between the two.

The handling is enforced by one while the other may be unknown to the person who calls the function. I think that's a pretty clear difference.

[–] [email protected] 2 points 3 months ago

But that's what I mentioned regarding Java there. Java calls them "exceptions", but generally forces the caller to either handle them or explicitly bubble them upwards...