- From: Marcos Caceres <w3c@marcosc.com>
- Date: Sun, 25 Mar 2012 00:32:10 +0000
- To: Cameron McCormack <cam@mcc.id.au>
- Cc: public-script-coord <public-script-coord@w3.org>
On Saturday, 24 March 2012 at 00:56, Cameron McCormack wrote: > Marcos Caceres: > > The use case for throwing custom WebIDL exceptions is to be able to > > implement WebIDL interfaces directly in JavaScript (when allowed by > > the presence of [Constructor])…. though my real use case is to be > > able to construct DOMExceptions in JS, I'll need to take that up with > > DOM4. > > This is already possible, because exception interface objects are > required to be function objects with a [[Call]] behaviour that > constructs the exception. So there is no need for [Constructor] on them. Yeah.. I kinda realised that after I sent the email… however…. how do you create one without first coercing an exception object out of the exception type you want? I had a go at trying to do it [1]… but I had to do the following for a DOMException: try { //force an exception to be generated; document.removeChild({}) } catch (e) { //use it as the prototype newException = Object.create(e) } //alias for the prototype, helps us populate the new object var proto = newException.__proto__ //"shadow" the name property on the new object //Chrome claims these are writable, but they aint! :) props = Object.getOwnPropertyDescriptor(proto, "name"); props.value = name; Object.defineProperty(newException, "name", props); … And so on… Kind regards, Marcos [1] http://jsfiddle.net/yDNgL/30/
Received on Sunday, 25 March 2012 00:32:43 UTC