【问题标题】:Replacement for try/catch in nodejs due to performance overhead由于性能开销而替换 nodejs 中的 try/catch
【发布时间】:2014-10-30 05:16:28
【问题描述】:

我目前正在使用try/catch to handle JSON.parse errors。但是我最近在阅读了一些best practices 后发现在nodejs 上使用try/catch 有一些performance overhead。性能开销是否已经修复,是否有另一种方法可以在不使用 try/catch 的情况下避免 JSON.parse 上的错误?

【问题讨论】:

标签: javascript json node.js performance try-catch


【解决方案1】:

没有您自己的解析器,没有简单的方法可以避免 try-catch。

试试这个性能测试: http://jsperf.com/try-catch-performance-overhead

使用 Chrome 进行测试,因为 NodeJS 只是 V8。就我而言,有 41% 的性能损失。但是,除非您打算每秒读取数千个 JSON,否则我建议您只使用标准的 try-catch 并使您的代码可读。

请注意,对于 Firefox,这 3 个测试之间几乎没有区别。

【讨论】:

  • 我已经在我的问题中声明了该网址。不过谢谢。
【解决方案2】:

使用 try/catch 构造而不是回调错误函数的问题是 try/catch 无法捕获异步事件,并且在捕获异常时可能会泄漏太多数据。

最佳实践是在同步事件中使用 try/catch:

try
{
  dangerous.function();
}
catch(error);
{
  console.log(error);
}

以及异步触发事件的回调函数:

dangerous.function(function(error)
{
  console.log(error);
});

【讨论】:

  • “导致数据过多”是什么意思?
  • 就像,从我听到的内容中泄露你的整个堆栈跟踪。
猜你喜欢
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2011-04-09
  • 2019-11-15
  • 2020-04-02
  • 2010-09-14
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多