?I have something that annoys me about how JavaScript try/catch error handling currently works. Don't get me wrong, I totally understand why it works that way, and it makes sense. But having the option to get around that behavior would be really nice.

My idea/proposal is illustrated with this gist:

https://gist.github.com/802625

Essentially, what I'm running into is several different use-cases for the need to wrap a try/catch around some call, and "observe" if it error'ed or not. Notice in the code snippet that I'm "modifying" the error's message string before re-throwing it. However, that's only one use-case. I might very well not need to modify the error, but simply passively "observe" (ie, not interfere with the bubbling up of that error) and for instance do some sort of cleanup or other graceful handling, and then pass the error along to continue its bubbling.

The reason for not wanting to interfere is in the sense of wanting the original error to maintain its original execution context (almost like an error propagation "stack" if you will), so that when the browser/engine reports the uncaught error, it reports it from the correct origination point (source file, line-number, etc).

If you try/catch such an error, and then "re-throw" it, that context is lost. I'm not positive, but I'm guessing that perhaps this is intentional by-design, and not just a particular implementation detail. If it *is* standardized, I'm proposing an alternative/addition. If not, I'm proposing we standardize a way to both preserve and explicitly not-preserve (aka, override) the original context. For compat reasons, the default would certainly stay as it currently is, with my idea being opt-in if the author needs it.

Of course, JavaScript doesn't expose the internals like the original context source file/line-number/etc (although I kinda wish it would), so for purely JavaScript sake it really doesn't matter. But I'm running into this in the server-side JavaScript world numerous times, and wishing the engine could keep that context. It's also useful for debugging purposes when looking at JavaScript errors reported in the browser's error console, for instance.

I'm interested in thoughts on either snippet's approach and the feasibility of something like this?


--Kyle Simpson




_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to