W3C home > Mailing lists > Public > public-script-coord@w3.org > April to June 2012

Re: Should Exceptions be Errors in the ECMAScript bindings?

From: Cameron McCormack <cam@mcc.id.au>
Date: Sat, 23 Jun 2012 12:18:14 +1000
Message-ID: <4FE52766.1020107@mcc.id.au>
To: Allen Wirfs-Brock <allen@wirfs-brock.com>
CC: Travis Leithead <Travis.Leithead@microsoft.com>, Erik Arvidsson <arv@chromium.org>, "public-script-coord@w3.org" <public-script-coord@w3.org>
Allen Wirfs-Brock:
> It seems  (I need to research this a bit more to be sure) like what
> should work  is to simply define your exception objects just like the ES
> spec defines "NativeError" objects[1].  The NativeErrors are all
> essentially "subclasses" of Error of the exactly the sort you will get
> with the proposed ES6 class extensions if you said [2]:
>    class DOMException extends Error.prototype {
>        constructor(...args) {super(...args}
>    }
>
> You can wire up essentially the same structure manually which is what
> the ES5 spec. does for the NativeErrors.

OK.  Although I don't use the same kind of wiring wording in Web IDL, it 
looks like the only requirement missing is that [[Class]] be "Error" 
(the {}.toString issue is solved as I mention in 
http://www.w3.org/mid/4FE52636.7050002@mcc.id.au).

> Note that while there isn't currently any  special standardized behavior
> for Error, implementations do have non-standard behaviors such as
> capturing stack traces.  This would have to be dealt with in the actual
> implementations but conceptually is captured by the super constructor call.

All right.  Constructors for Web IDL exceptions do not explicitly invoke 
a superclass' constructor, but they do everything in 
http://es5.github.com/#x15.11.7.2 except set [[Class]] to "Error".  It 
might be good to have a note to say that exception objects are intended 
to be errors, so any non-standard things that appear on Error objects 
like stack traces and line numbers should also appear on them.
Received on Saturday, 23 June 2012 02:18:53 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 8 May 2013 19:30:06 UTC