【发布时间】:2017-09-07 11:26:43
【问题描述】:
这是我的应用程序结构:
- app.js
- routes
---- index.js
ExpressJS 应用程序为development 和production 环境创建错误处理程序。这是来自app.js的代码sn-p:
app.use('/', routes); // routing is handled by index.js in the routes folder
//The following middleware are generated when you create the Express App
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error.ejs', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
在routes/index.js 内部,我处理所有路由:
var router = express.Router();
router.get('/', function (req, res) {
someAsyncFunction(function(err, result) {
if (err) throw err; // Handle this error
}
});
module.exports = router;
我希望将 err 传递给错误处理程序之一,而不是被抛出。我该怎么做?
【问题讨论】:
标签: javascript node.js express error-handling