Sorry, but I don't see why this is any different to try.. catch.. finally.

This is built into the language at a low level, and is generic enough to be used in many ways.

How does your system actually make anything different?