@eniko Well for me the problem with exceptions in most programming languages is how you can't even know which exceptions if any would a function throw, even though it ought to be part of something like the function signature. So for some programs you end up with some ugly catch-all in main.
Which is why I think Hare got error handling right, it's very close to exceptions as they can propagate all the way down to main with ?, but the compiler checks your work unless you assert against errors via !.
https://harelang.org/tutorials/introduction#handling-errors