我在我的Node.js express应用程序中有以下代码:
router.route('/user')
.post(async function(req, res) {
if(req.body.password === req.body.passwordConfirm) {
try {
var response = await userManager.addUser(req.body);
res.status(201).send();
} catch(err) {
logger.error('POST /user failed with error: '+err);
res.status(500).send({err:"something went wrong.."});
}
} else {
res.status(400).send({err:'passwords do not match'});
}
})
并且userManager:
var userManager = function() {
this.addUser = async function(userobject) {
userobject.password_hash = await genHash(userobject.password_hash);
var user = new User(userobject);
return await user.save();
};
};
module.exports = userManager;
我的问题是:路由中的try-catch块是否会捕获addUser中抛出的所有错误,还是仅捕获由user.save()抛出的错误,因为它是返回的内容?
addUser
是一个async function
,因此永远不会抛出异常。它只会返回一个可能被拒绝的 promise。 - Bergiawait
调用addUser
时... - James