diff --git a/lib/application.js b/lib/application.js index a265a0d..f5599dd 100644 --- a/lib/application.js +++ b/lib/application.js @@ -155,10 +155,15 @@ app.createContext = function(req, res){ */ app.onerror = function(err){ + if (!err) return; + assert(err instanceof Error, 'non-error thrown: ' + err); + if (404 == err.status) return; if ('test' == this.env) return; + + var msg = err.stack || err.toString(); console.error(); - console.error(err.stack.replace(/^/gm, ' ')); + console.error(msg.replace(/^/gm, ' ')); console.error(); }; diff --git a/lib/context.js b/lib/context.js index 1e2f0b7..7b182cd 100644 --- a/lib/context.js +++ b/lib/context.js @@ -91,18 +91,17 @@ var proto = module.exports = { assert(err instanceof Error, 'non-error thrown: ' + err); + // delegate + this.app.emit('error', err, this); + // nothing we can do here other // than delegate to the app-level // handler and log. if (this.headerSent || !this.writable) { err.headerSent = true; - this.app.emit('error', err, this); return; } - // delegate - this.app.emit('error', err, this); - // unset all headers this.res._headers = {};