4 comments

[ 4.1 ms ] story [ 26.9 ms ] thread
How does exception/error handling work if you code like this? I'd love to be able to do the same in CoffeeScript.
Exceptions are interesting. The calls are asynchronous so you can't wrap the whole macro in a single try/catch. See node's wiki for an explanation on why this is a problem:

https://github.com/joyent/node/wiki/Async-exception-handling

Node encourages people to create functions like:

    function(err, x) {
        if(err) handle(err);
    }
This way they avoid the whole async + try/catch problem. It should be possible to define a macro that does something similar.

Avoiding that trap, individual try/catch statements still work fine:

    (timeout/timeout-macro
     (pn "Hello")
     (try*
      (pn (throw "Throwing up"))
      (catch e (pn (str "There was an error: " e))))
     (pn "World"))