栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

安全处理节点中的错误JSON.parse()

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

安全处理节点中的错误JSON.parse()

捕获无效的JSON解析错误的最佳方法是将调用放入

JSON.parse()
一个
try/catch
块中。

您确实没有其他选择-内置的实现会对无效的JSON数据引发异常,并且防止该异常停止您的应用程序的唯一方法是捕获它。即使使用第三方库也无法避免-
他们必须

try/catch
JSON.parse()
某个地方进行呼叫。

唯一的选择是实现自己的JSON解析算法,该算法可以更有效地处理无效的数据结构,但是感觉就像用一个小核子挖了一个1立方米的孔。

关于性能的注意事项

Node.js使用的v8
Javascript引擎无法优化包含

try/catch
块的函数。

更新: v8 4.5及更高版本可以优化try /
catch。对于较旧的版本,请参见下文。

一个简单的解决方法是将安全解析逻辑放入单独的函数中,以便仍可以优化主要函数:

function safelyParseJSON (json) {  // This function cannot be optimised, it's best to  // keep it small!  var parsed  try {    parsed = JSON.parse(json)  } catch (e) {    // Oh well, but whatever...  }  return parsed // Could be undefined!}function doAlotOfStuff () {  // ... stuff stuff stuff  var json = safelyParseJSON(data)  // Tadaa, I just got rid of an optimisation killer!}

如果偶尔进行JSON解析,这可能不会对性能产生明显影响,但是如果在使用率偏高的函数中使用不当,可能会导致响应时间急剧增加。

关于try / catch被阻止的注意事项

应当注意, Node.js中
的Javascript代码的每个声明都一次只能执行一次,无论是从主函数,回调还是从其他模块或其他任何函数调用它。这样,每条语句 都会阻塞
该过程。这并不一定是一件坏事-
一个设计良好的应用程序将花费大部分时间来等待外部资源(数据库响应,HTTP通信,文件系统操作等)。因此,非常重要的是可以通过v8引擎优化频繁执行的Javascript代码,以便在这种阻塞状态下花费尽可能少的时间-
请参阅有关性能的说明。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484948.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号