gpt4 book ai didi

javascript - 为什么不尝试使用catch block 捕获异常

转载 作者:行者123 更新时间:2023-12-03 08:41:14 25 4
gpt4 key购买 nike

所以我有这段代码可以正常工作,但是如果数据类型有错误,try catch块将无法正常工作。看来我将不得不在使用它们之前检查所有数据类型,以确保服务器不会崩溃。

例如,在下面的代码中,如果由于某种原因 token 不是数组,则在引发错误时,我的try catch不会捕获该错误。相反,它使服务器崩溃。

router.patch("/updateDeviceToken", checkIfAuthenticated, (req, res) => {
try {
console.log("In updating contacts");
console.log("body", req.body);
User.findById(req.authId, (error, user) => {
try {
if (error) {
console.log(error);
console.log("user found");
return res.status(404).json(error);
}
if (!user) return res.status(401).json("User not found");
if (
req.body.android &&
!user.tokens.android.includes(req.body.android)
) {
user.tokens.android.push(req.body.android);
user
.save()
.then((user) => {
console.log("token updated");
return res.json("Token updated");
})
.catch((error) => res.status(404).json(error));
} else if (req.body.iOS && !user.tokens.iOS.includes(req.body.iOS)) {
user.tokens.iOS.push(req.body.iOS);
user
.save()
.then((user) => {
console.log("token updated");
return res.json("Token updated");
})
.catch((error) => res.status(404).json(error));
} else {
console.log("token received but not updated");
return res.json("Token received but not updated");
}
} catch (e) {
console.log(e);
return res.status(404).json("There was an error");
}

});
} catch (e) {
console.log(e);

}
});

最佳答案

尝试catch不适用于then
您可以将代码更改为与await / async一起使用 promise 吗?

您可以使用try catch

关于javascript - 为什么不尝试使用catch block 捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61279337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com