【发布时间】:2015-01-06 08:26:27
【问题描述】:
有人能解释一下在 node.js Express 应用程序中什么时候适合抛出这样的错误:
throw new Error('my error');
或通过通常标记为“下一步”的回调传递此错误,如下所示:
next(error);
您能否解释一下他们每个人将在 Express 应用程序的上下文中做什么?
例如,这里有一个处理 URL 参数的 express 函数:
app.param('lineup_id', function (req, res, next, lineup_id) {
// typically we might sanity check that user_id is of the right format
if (lineup_id == null) {
console.log('null lineup_id');
req.lineup = null;
return next(new Error("lineup_id is null"));
}
var user_id = app.getMainUser()._id;
var Lineup = app.mongooseModels.LineupModel.getNewLineup(app.system_db(), user_id);
Lineup.findById(lineup_id, function (err, lineup) {
if (err) {
return next(err);
}
if (!lineup) {
console.log('no lineup matched');
return next(new Error("no lineup matched"));
}
req.lineup = lineup;
return next();
});
});
在注释行“//我应该在这里创建自己的错误吗?” 我可以使用“throw new Error('xyz')”,但它到底能做什么?为什么通常最好将错误传递给回调“next”?
另一个问题是 - 我在开发时如何让“throw new Error('xyz')”显示在控制台和浏览器中?
【问题讨论】: