John J Barton wrote:
Depending on the design, this could be anywhere from "only
errors raise exceptions" to "developers must supply a
algorithm to decide". Languages with a centrally controlled
type system (I have in mind Java) provide a relatively simple
way to separate these exceptions.
And how is this relevant? I'm not snarking back. JS != Java.
Java is one example of a language that supports non-error uses of the
try/catch exception mechanism. Part of that support includes a way for
debuggers to distinguish errors uses from non-error uses. Encouraging
additional non-error use
Again, I object. StopIteration is not "encouraging additional non-error
[uses of try/catch]" outside of specialized, written-by-experts
libraries such as http://taskjs.org/.
The exceptions-are-not-all-errors cat is out of the bag. You don't seem
to agree but you haven't rebutted directly. I cry foul.
of the JavaScript try/catch mechanism without a similar means to
separate them from error uses
Again, without a type system, how?
Testing catch (e if e instanceof Error) was an explicit intended use of
catch guards from the ES3 days. With standard catch you would write an
if-else chain and remember to re-throw in final else. This is quite
doable now, so what's the problem? Note that DOMException instanceof
Error per http://www.w3.org/TR/WebIDL/#es-exceptions.
Yes, instanceof does not work cross-frame. This has been debated on
es-discuss a lot. For same-realm uses, it suffices, as people here have
pointed out recently. Exception catching may favor same-realm, I'm not
sure. But this is a separate issue.
will make features like onExceptionUnwind tedious for developers to use.
This is just the lowest tier of the API and we're not done yet.
To be frank, I think your frustration is perfectly understandable, but
not grounds for general exhortations or judgments against particulars
(StopIteration) that are not relevant (for-of handles outside of
specialized taskjs settings), or at the very least not decisive in light
of precedent (instanceof Error testing). Anyway, I hope to have shed
some light here. How'd I do?
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss