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.
If only python had a
throws
keyword like in Java. They got that right at least.raise
andraise
…from
?I think they meant the registration of what Exceptions a function can possibly throw.
@eager_eagle @onlinepersona
ah yes - that's useful
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.