I wouldn't recommend that approach. Wrapping every function and using a try-catch is an unnecessary performance hit. For try-catch, a top level uncaught exception handler lets you know where to fix code. I rarely use try catch for the simple reason that it provides little value when doing async programming.
On Thursday, January 10, 2013 6:58:57 AM UTC-8, Daniel R. wrote: > > 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] <javascript:>> [http://danielr.neophi.com/ > ] > > > On Thu, Jan 10, 2013 at 5:26 AM, Stuart P. Bentley > <[email protected]<javascript:> > > 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]<javascript:> >> To unsubscribe from this group, send email to >> nodejs+un...@**googlegroups.com <javascript:> >> 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
