所以我正在使用 express.js 并考虑在节点 7 中使用 async/await。有没有办法我仍然可以捕获错误但摆脱 try/catch 块?也许是一个函数包装器?我不确定这将如何实际执行函数的代码并调用next(err)
.
exports.index = async function(req, res, next) {
try {
let user = await User.findOne().exec();
res.status(200).json(user);
} catch(err) {
next(err);
}
}
像这样的东西……?
function example() {
// Implements try/catch block and then handles error.
}
exports.index = async example(req, res, next) {
let user = await User.findOne().exec();
res.status(200).json(user);
}
编辑:
与此更相似的东西:
var wrapper = function(f) {
return function() {
try {
f.apply(this, arguments);
} catch(e) {
customErrorHandler(e)
}
}
}
这将以某种方式处理 try/catch 块但不起作用:
exports.index = wrapper(async example(req, res, next) {
let user = await User.findOne().exec();
res.status(200).json(user);
});
请参阅有没有办法将 try-catch 添加到 Javascript 中的每个函数?对于非异步示例。