This is the default behavior of the new check system. If you don't handle it at the bottom of the stack it is propagated up the stack to the caller automatically. Not sure how easy this will be to debug since it doesn't capture a stack trace at the bottom and it won't be obvious where the error started.
But isn’t it only to the immediate caller using the explicitly declared error, not all the way up the stack?
That’s very different behaviour and along with using the error interface avoids the main objections to exceptions ( unexpected throws handled far from the error location, unexpected errr types).
This is just a small change to make it easier to annotate and easier to return without comment.
Assuming the caller uses check as well it will continue on. Seems the same as checked exceptions to me.
Proof: Any exception system that lacked the ability to catch exceptions from lower frames would be called a defective exception system.
This check keyword does not implement an exception handling system.