我在Express中有这个POST路由处理程序。我担心的是,使用一个大的try/cat块不能正确地捕获其中发生的所有错误。
在下面唯一的try/cat块中,我尝试访问嵌套的本机JS属性-即parsed.template.list.push(listItem);
所以我试图将一个对象推送到嵌套属性的数组上。如果模板不存在,它将导致运行时错误,但这并不被try/catch所捕获,服务器只是完全停止,并且没有发送JSON响应。
有没有办法改进我的代码——我需要在我的代码中放入无数的尝试/捕捉来试图心不在焉地保护一切吗?
POST: function (req, res, next) {
var incidentId = req.body.incident_id;
if (incidentId) {
csDataHelper.getAccountNumWithIncidentCorrelationID(incidentId, function (err, response, body) {
if (err) {
return res.json({error: err.toString()});
}
try { // big try/catch starts here
var body = JSON.parse(body);
var result = csDataHelper.parseInfoFromCSResponse(body);
if (!(result instanceof Error)) {
var accountNum = result.accountNum;
var homePhone = result.homePhone;
var altPhone = result.altPhone;
var absPath = path.resolve(nconf.get('globalRoot').concat('/json_response_templates/pay_by_phone.json'));
fs.readFile(absPath, 'utf8', function (err, jsonTemplate) {
if (err) {
res.json({'error': err.toString()});
}
else {
var str = jsonTemplate.replace('${accountNumber}', accountNum).replace('${incidentId}', incidentId);
var parsed = JSON.parse(jsonTemplate);
if (homePhone) {
var listItem = {
"label": homePhone,
};
parsed.template.list.push(listItem);
}
if (altPhone) {
var listItem = {
"label": altPhone,
};
parsed.template.list.push(listItem);
}
res.json(parsed);
}
});
}
else {
return res.send({error: 'no accountNumber sent to Baymax from Contextstore ->' + result});
}
}
catch (err) {
return res.json({error: err.toString()});
}
});
}
else {
res.send({error: 'null/empty incident_id posted to Baymax'});
}
}
}
当try/catch中的某些代码遇到错误时,try/catch块不会捕获该错误。具体来说,我知道在某些情况下“parsed.template.list.push(listItem);”实际上应该是“parsed.list.push(listItem);”,这取决于JSON的性质。
换句话说,在JS中,使用嵌套JSON时是否需要使用嵌套的try/catch。解析调用还是嵌套JS对象属性检索?
坦白地说,这是非常危险的,而且是我在Node中看到的所有事情中最危险的。解析JSON和遍历本机js对象对服务器正常运行时间构成了一些最大的威胁。
如何应对?
它在parsed.template.list.push(listItem)
上崩溃的原因是因为该行在异步函数调用的回调中。
因此,目前最好的选择是在回调中添加一个try-catch,或者添加一个类似if(parsed.template)的条件
我现在必须学习通过fire base编写移动应用程序web服务。我点击了这个链接:https://firebase-php.readthedocs.io/en/stable/ 在我的核心网站中,我创建web服务文件夹,然后创建我的fire。php文件。这个文件代码在这里, 我得打电话给我的支持档案:https://github.com/kreait/firebase-php/ 但我还是得到了一个:
问题内容: 我目前有这个: test.json看起来像这样: 我越来越: 如何更改它,以便无论我拥有多少嵌套值,它都将循环遍历所有嵌套项目? 所以对于上面的例子,我会得到 问题答案: 您可以创建一个递归循环函数,但是会遇到一个问题:当属性是对象时,因为没有字符串,所以没有文本可显示。因此,您将得到: 因为while 是为项目#2显示的字符串,所以它是为项目#1显示的对象。 无论如何,这就是我组成的
嗨,我是一个初学者,正在创建简单的wordpress模板。在我的函数中,除了粗体的代码行之外,其他一切都可以工作。php文件(wp_enqueue('jquery');)。当我排除它时,错误消失了,但我在查看源代码时没有看到wordpress添加的JQuery。不确定这是代码问题还是Jquery版本问题。我尝试添加JQuery迁移插件,但仍然出现相同的错误。我在本地机器上运行所有这些由拉拉贡设置。
问题内容: 我在Angular JS接收错误时遇到问题:未捕获的错误:[$ injector:modulerr]。我的JS文件外观 我还包括了angular-route-js Angular文档说问题出在http://docs.angularjs.org/api/ngRoute 问题答案: 尝试添加以下内容:
问题内容: 我必须遍历json数组对象。 它具有以下结构。 基本上我在做的是prod_1是产品的名称,并且prod_1的版本列表已填充在其中。 所以现在我想要的是产品的名称以及它的版本。 问题在于可能有很多产品和该产品下的许多版本。所以我需要可以在 javascript 中使用适当的循环结构来对其进行处理。 最好将循环将产品名称存储在一个变量中,将版本存储在另一个变量中,因为我需要对产品名称进行一
我有一个现有的spring boot应用程序。我刚刚在、中添加了acturetor。 执行器工作有响应代码错误 来自日志:看起来spring无法解析某个参数。下面是日志。 019-05-15 14:38:24.747 DEBUG 8964---[nio-8090-exec-3]o.s.web.servlet.dispatcherServlet:GET“/acturet/health”,parame