Asynchronous try-catch based on Node.JS domain module.
Note: Use wisely, asynchronous exceptions may cause resource leakage as discussed here
atry(runningFunction, [arg1, [arg2, ...]]).catch(errorHandler)- Catches both synchronous and asynchronous exceptions
atry(function() {
setTimeout(function() {
throw new Error("Got error");
}, 10);
}).catch(function(err) {
console.log("Got error", err);
});.ignoreCatch(errorHandler)- Ignores both synchronous and asynchronous exceptions
atry(function() {
setTimeout(function() {
throw new Error("Got error");
}, 10);
}).ignoreCatch(); // ignore exceptionsatry.bind(bindFunction).catch(catchFunction)- Returns function that will be exception safe
fs.readFile('someFile', atry.intercept(function(err, data) {
if(err) throw err; // this will be caught below
console.log("Got data");
}).catch(function(err) {
console.log("got error during file reading", err);
}));atry.intercept(bindFunction).catch(catchFunction)- Returns function that will be exception safe and its first argument will be handled as if it iserr.
fs.readFile('someFile', atry.intercept(function(data) {
console.log("Got data");
}).catch(function(err) {
console.log("got error during file reading", err);
}));Damian Kaczmarek [email protected]
http://stackoverflow.com/questions/14301839/javascript-asynchronous-exception-handling-with-node-js