I disagree, I hate that keyword. Exceptions should be… exceptional, and regular errors should be data. I only want to see exception blocks at top levels for logging and whatnot, everything else should be destructured monads in a match block or similar.
Forgetting a function can throw exceptions is an honest mistake, ignoring errors when you've destructured a return value to get the data is a choice. The former is hard to catch, the latter is plainly obvious in a code review.
I disagree, I hate that keyword. Exceptions should be… exceptional, and regular errors should be data. I only want to see exception blocks at top levels for logging and whatnot, everything else should be destructured monads in a match block or similar.
Forgetting a function can throw exceptions is an honest mistake, ignoring errors when you've destructured a return value to get the data is a choice. The former is hard to catch, the latter is plainly obvious in a code review.