【发布时间】:2015-04-16 06:09:42
【问题描述】:
我正在 MEAN 应用中设置用户注册。但是,我在错误处理方面遇到了困难,尤其是在 Mongoose 验证方面。
在下面的代码中,当我向我的 API 提供错误的电子邮件时,mongoose 抛出的异常不会在我的块中捕获。
try {
User.save(function (err, user) {
if (err) throw err; //This exception in not catched :(
res.status(200).json({
_status: 200,
_content: {
message: "OK",
data: user
}
});
});
} catch (err) {
res.status(400).json({
_status: 400,
_content: {
message: err.toString()
}
});
}
我怎样才能捕捉到这个异常?
【问题讨论】:
-
你能通过执行 console.log(err) 来检查你的错误返回什么吗?在你的 User.save 回调中
-
嗨,控制台的第一行输出给我:
if (err) throw err; ^ ValidationError: This email is not valid -
您必须在回调中使用 try catch。
-
感谢@yalamber 这个技巧奏效了。但我不明白为什么。回调中抛出的错误是否从外部不可见?
-
执行try catch块时,没有报错。由于您的 User.save 是异步的,它只会在稍后执行回调时抛出错误。您可能需要研究 javascript 的异步特性。
标签: node.js mongodb mongoose mean