由于性能开销而在nodejs中替换try / catch

时间:2014-09-05 09:27:46

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

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

2 个答案:

答案 0 :(得分:1)

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

尝试此性能测试: http://jsperf.com/try-catch-performance-overhead

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

请注意,对于Firefox,3次测试之间几乎没有差异。

答案 1 :(得分:0)

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

最佳做法是在同步事件中使用try / catch:

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

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

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