`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 <[email protected]> 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 > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

