Я использую 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`);
}
});
I 'Я не уверен, что использование try-catch внутри другого является лучшим решением.Так как же я могу обработать любую ошибку внутри попытки, используя только один улов?