there are arguments to be made about non-local jumps in general. on targets like WASM you can't actually do long jumps so you end up having to do some silly shit like box all your return values in result types and turn throws in to a chain of returning failure boxes. and languages tend not to coordinate their defer blocks, so polyglot environments run in to issues of one language's exceptions hopping over another's finally's.
i prefer throw/catch for error use, but i also tend to play with the foot guns so idk
