A domain-based asynchronous try/catch with (optional) long stack traces for node.js optimized for V8.
WARNING: trycatch replaces the built-in global Error object.
#Install
npm install trycatch
#Use
var trycatch = require('trycatch')
trycatch(function() {
// do something error-prone
}, function(err) {
console.log(err.stack);
})
###Returning 500s on Server Request
http.createServer(function(req, res) {
trycatch(function() {
setTimeout(function() {
throw new Error('Baloney!');
}, 1000);
}, function(err) {
res.writeHead(500);
res.end(err.stack);
});
}).listen(8000);
Visit http://localhost:8000 and get your 500.
#Options Optional Long-Stack-Traces:
// Because trycatch shims all native I/O calls,
// it must be required & configured with 'long-stack-traces' before any other modules.
var trycatch = require('trycatch')
trycatch.configure({'long-stack-traces': true})
trycatch(fnTry, fnCatch)
Colors:
var trycatch = require('trycatch')
trycatch.configure({
colors: {
// 'none' or falsy values will omit
'node': 'none',
'node_modules': false,
'default': 'yellow'
}
})
trycatch(fnTry, fnCatch)
Advanced Formatting:
var trycatch = require('trycatch')
trycatch.configure({
format: function(line) {
// Alter final output (falsy values will omit)
return line
}
})
trycatch(fnTry, fnCatch)
#Basic Example
var trycatch = require("trycatch"),
_ = require('underscore')._
trycatch(function() {
_.map(['Error 1', 'Error 2'], function foo(v) {
setTimeout(function() {
throw new Error(v)
}, 10)
})
}, function(err) {
console.log("Async error caught!\n", err.stack);
});
See the /test
and examples
directories for more use cases.