Standardizing conditional try/catch

Jordan Harband ljharb at gmail.com
Sat Mar 18 06:28:58 UTC 2017


`instanceof` doesn't work across realms (iframes, for example). If we
introduced conditional catch blocks, I'd want a more reliable matching
mechanism than instanceof.

On Fri, Mar 17, 2017 at 5:01 PM, Zach Lym <zachlym at indolering.com> wrote:

> Firefox supports the following conditional `catch` syntax:
>
>     try {
>         let result = await ();
>     } catch (e if e instanceof ErrorType) {
>         ...
>     }
>
>
> This was originally implemented in Spidermonkey as part of an ES proposal
> around 2000, but it was rejected for unknown reasons [0]. A 2012 email to
> this list suggesting standardization of the syntax was passed over in favor
> of waiting for a generic pattern matching facility [0][1].  Later
> discussion suggests that the pattern matching proposal would have been very
> slow [2]. A proposal for a Java-like type-based conditional was proposed in
> 2016, but was criticized for lacking generality [2].
>
> If the above summary is accurate, I would like to try to standardize the
> vanilla syntax once again.  It's imperative, general, and doesn't preclude
> the use of any hypothetical pattern matching functionality.
>
> Javascript's control flow has improved dramatically in recent years:
> promises got rid of callbacks, `async`/`await` clipped promise chains, and
> classes make it easy to create custom Error objects that preserve
> stacktraces.  Conditional catch is the last bit of syntax needed to make JS
> look like it was designed to handle asynchronous functions.
>
> Thoughts?
>
> -Zach Lym
>
> [0]: https://esdiscuss.org/topic/conditional-catch-clause#content-10
> [1]: https://esdiscuss.org/topic/conditional-catch
> [2]: https://esdiscuss.org/topic/error-type-specific-try-catch-
> blocks#content-14
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170317/6817ec3e/attachment.html>


More information about the es-discuss mailing list