javascript - 如何仅使用一个捕获来处理尝试中的错误?
问题描述
我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 来处理 try 中的任何错误呢?
解决方案
推荐阅读
- flutter - Flutter 根据服务器响应显示 AlertDialog
- visual-studio-code - 如何让 CTRL+K CTRL+E 在终端中工作
- android - 使用绘制对象android的TextAlignment
- r - 离散变量并提供限制
- kivy - 在 Kivy 中是否有某种方式可以在触摸许多不同的行时调用不同的操作
- python - OpenPyXL - 从行列表中的特定行输入值
- kotlin - 如何在 kotlin-exposed 中编写 insideOP postgis 扩展?
- reactjs - 为什么 useSelector 返回新对象?
- ansible - ansible 将远程 nfs 共享挂载到运行 ansible playbook 的 localhost 服务器
- typescript - 在 Typescript 中扩展泛型类型