Optional catch in JavaScript
Posted 26 July 2007 tagged with [exceptions] [javascript] [programming] [rhino] [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.
Server-side JavaScript under Apache
Posted 09 July 2007 tagged with [apache] [javascript] [programming] [spidermonkey]
Ash Berlin and I recently hacked together an Apache module that embeds the SpiderMonkey JavaScript engine and lets you run JavaScript code on the server as CGI scripts. We called it mod_js.