jerakeen.org

by Tom Insam

notes☴

code☷

links☲

photos☵

Optional catch in JavaScript

created 26 July 2007 in blog tagged exceptions, javascript, programming, rhino and spidermonkey.

One of the things that’s been annoying me about JavaScript recently is the inability to only catch certain classes of exception, as in Java or Python, for instance. The try {..} catch(e) {..} block has always seemed too inclusive. But recently Ash found a crazy syntax in SpiderMonkey that lets us only catch certain exceptions.

try {
  // something that can throw
} catch(e if e.bar == 'foo') {
  // an error is only caught here if it has a 'bar' property of 'foo'
} catch(e if e.bar == 'baz') {
  // there can be different catches for different conditions
} catch (e) {
  // otherwise it's caught here. Without this block, the error would fall
  // through the 'try' and be re-thrown.
}

I haven’t bothered testing this in Internet Explorer (or any other web browser for that matter), because I’m only interested in server-side JavaScript execution at the moment. It works in at least recent SpiderMonkey CVS and Rhino 1.6r6, not sure about earlier versions.

Joel - Why exceptions are bad

Joel - Why exceptions are bad

created 09 October 2004 in links tagged exceptions, joel and programming.

http://www.joelonsoftware.com/items/2003/10/13.html