Looks a lot like an underscore mixin I use: http://life.neophi.com/danielr/2012/04/underscore_mixin_for_error_han.html
In general though domains handle this better. -- Daniel R. <[email protected]> [http://danielr.neophi.com/] On Thu, Jan 10, 2013 at 5:26 AM, Stuart P. Bentley <[email protected]>wrote: > Hey guys, new(ish) to Node, first time posting. I made an npm account > shortly after I started for programming, but I haven't written anything > that really called for a reusable npm package until now. > > So, the code I'm writing doesn't use any flow-control/promise-chain > libraries like seq or step or q or first or async or queue-async (although > I have used the last one a little). However, it still has a few callbacks, > and it rarely (if ever) cares about what to do if there's an error (other > than panic, of course). > > Anyway, to avoid endless "if(err){console.error(err)} else {" typing, I > found myself copy-pasting something like this at the top of all my scripts > to wrap all my callbacks in: > > function errorHandlingCb(errCb){ > return function onSuccess(successCb){ > return function(err) { > if (err) { > errCb(err); > } else { > successCb.apply(this,Array.**prototype.slice.call(** > arguments,1)); > } > } > } > > (or some variant on the onSuccess function with console.error or "throw > err") > > Eventually I started writing something with its functionality spread > across files, got tired of having the same 7-9 lines in multiple files in > one project (let alone across multiple projects, and decided I'd turn it > into a module: > > https://github.com/stuartpb/**catcher/blob/master/index.js<https://github.com/stuartpb/catcher/blob/master/index.js> > > I reset my npm password (which I'd unsurprisingly forgotten) and published > it: > > https://npmjs.org/package/**catcher <https://npmjs.org/package/catcher> > > What do you think? I don't know if I'm replicating some existing thing, or > if I've overlooked something, or made some assumption I shouldn't. > > Here are some ideas I have for 0.2: > > - "errorize" any non-Error strings / objects (to amerliorate the problems > detailed in http://www.devthought.com/**2011/12/22/a-string-is-not-an-** > error/ <http://www.devthought.com/2011/12/22/a-string-is-not-an-error/>) > by replacing line 5 with this: > > if (err instanceof Error) ecb(err); > else ecb(new Error(err)); > > - dropp throwNewErr (in light of the above change) > - New functions oriented toward different combinations of wrapping the > method and error handler for calling the method with the success callback, > rather than just wrapping the error handler, then the success callback, > then using that in the method > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: https://github.com/joyent/**node/wiki/Mailing-List-** > Posting-Guidelines<https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines> > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > nodejs+unsubscribe@**googlegroups.com<nodejs%[email protected]> > For more options, visit this group at > http://groups.google.com/**group/nodejs?hl=en?hl=en<http://groups.google.com/group/nodejs?hl=en?hl=en> > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
