Hacker News new | ask | show | jobs
by MatthewPhillips 4884 days ago
You can wrap your callback functions and handle errors all in one spot. Example:

    var slice = Array.prototype.slice;

    function errHandler(callback) {
      return function(err) {
        if(err) {
      // Error handling code here.
        } else {
          callback(slice.call(arguments, 1));
        }
      };
    }
1 comments

I've tried stuff like this before, but it clutters your code pretty bad anyway, doesn't it? You have to do something like this:

    function myAsyncThing(cb) {
        var handleErrors = errHandler(cb)
        doSomethingElse(handleErrors(function(data) {
            // repeat. use handleErrors at each callback. 
        }))
    }
    
Am I missing something? Can you get it cleaner than that?
That depends, if you're using doSomethingElse a lot I'd just go ahead and wrap that as well, if you're using it once it's no big deal.

  doSomethingElse(errHandler(function(real, results) {
    // foo
  }));
  
If you're using Node you should be writing small(ish) modules anyways, so it doesn't lead to much code blote and its advantageous to consolidate your error handling in one or 2 spots.