我正在使用try-catch
处理我的代码错误。
即使阅读和搜索很多,我仍然有一些疑问。
在下面的代码段中,我想处理try block
内部发生的任何错误,但是仅当它发生在db.find
行中时,它才会捕获错误。
如果错误发生在db.find
函数内部,则意味着在if or else
代码中,catch
无法捕获此错误。
routes.get('/app/:id', (req, res) => {
var downloadUrl = http://url;
try {
db.find({ _id: req.params.id }, function (err, subscriber) {
if (!subscriber.length) {
res.render('info', { url: consts.baseUrl, message: consts.USERNOTFOUND });
} else {
res.render("app", { downloadUrl: downloadUrl });
}
});
}
catch (e) {
logger.error(`${e.status || 500} - ${e.message} - /app`);
}
});
要捕获if else block
中的错误(假设var subscriber
不存在),我需要这样放置另一个try catch
:
routes.get('/app/:id', (req, res) => {
var downloadUrl = consts.baseUrl + 'downloadapk/' + req.params.id;
try {
db.find({ _id: req.params.id }, function (err, subscriber) {
try{
if (!suabscriber.length) {
res.render('info', { url: consts.baseUrl, message: consts.USERNOTFOUND });
} else {
res.render("app", { downloadUrl: downloadUrl });
}
}catch(e){
logger.error(`${e.status || 500} - ${e.message} - /app`);
}
});
}
catch (e) {
logger.error(`${e.status || 500} - ${e.message} - /app`);
}
});
我不确定在另一个内部使用try-catch是最佳解决方案。 那么,如何仅使用一个catch就可以解决尝试中的任何错误?