Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 由于性能开销,替换NodeJ中的try/catch_Javascript_Json_Node.js_Performance_Try Catch - Fatal编程技术网

Javascript 由于性能开销,替换NodeJ中的try/catch

Javascript 由于性能开销,替换NodeJ中的try/catch,javascript,json,node.js,performance,try-catch,Javascript,Json,Node.js,Performance,Try Catch,我目前正在使用。但我最近在阅读了一些文章后发现,在nodejs上使用try/catch有一些好处。性能开销已经修复了吗?有没有其他方法可以避免JSON.parse上的错误而不使用try/catch?没有自己的解析器,没有简单的方法可以避免try-catch 请尝试以下性能测试: 使用Chrome进行测试,因为NodeJS只是V8。在我的情况下,有41%的性能罚款。但是,除非您打算每秒读取数千个JSON,否则我建议您只使用标准的try-catch并使代码可读 请注意,对于Firefox,这3个测

我目前正在使用。但我最近在阅读了一些文章后发现,在nodejs上使用try/catch有一些好处。性能开销已经修复了吗?有没有其他方法可以避免JSON.parse上的错误而不使用try/catch?

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

请尝试以下性能测试:

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

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

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

try
{
  dangerous.function();
}
catch(error);
{
  console.log(error);
}
以及异步触发事件的回调函数:

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

如果您不在
try catch
中包装
JSON.parse
,它将抛出一个错误,因此您必须在其他地方捕获它。因此,答案中显示的技术是正确的。相关:我已经在我的问题中说明了url。谢谢。你说的“导致太多数据”是什么意思?比如,从我听到的消息中泄露你的整个堆栈跟踪。