由于性能开销,replacenodejs中的try / catch

我目前正在使用try / catch来处理JSON.parse错误 。 但是我最近在阅读了一些最佳实践之后发现,在nodejs上使用try / catch有一些性能开销 。 性能开销是否已经被修正了,还有另一种避免JSON.parse错误而不使用try / catch的方法吗?

使用try / catch结构而不是callback函数的问题在于,try / catch不能捕获asynchronous事件,并且在发生exception时可能泄漏太多的数据。

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

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

和asynchronous触发事件的callback函数:

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

没有简单的方法来避免没有你自己的parsing器的try-catch。

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

使用Chrome进行testing,因为NodeJS只是V8。 在我的情况下,有41%的performance处罚。 但是,除非您要每秒阅读数千个JSON,否则我build议您只使用标准的try-catch,并让代码可读。

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