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
I reset my npm password (which I'd unsurprisingly forgotten) and published
it:
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/) 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
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