2015-10-29 58 views
1

在JavaScript中使用大的try-catch块来包装jQuery的文档就绪事件中的所有代码是否是一种很好的做法?JavaScript中的大try-catch块

有些同事这样写

$(document).ready(function() { 
    try{ 
     //tons of code 
    } 
    catch(err){ 
     //post-exception statements 
    } 
}); 

所以他们处理的代码

出现的任何错误代码是这种做法是正确的?如果不是,我应该如何处理JavaScript中的错误?在异步函数中,我如何处理回调中的错误?特别是在文件准备。

+0

这是一个不好的方法。你不应该在一个巨大的try块中包装你的代码(如果有错误,那么你应该修复它而不是捕获它!)错误处理是另一个业务。如果您正在讨论诸如XHR中的超时或任何异步函数中的其他错误等错误,很可能它们将为回调函数提供参数。 –

+0

@Derek朕会功夫我知道我应该修复任何错误,但是当涉及到知道发生了错误,例如我想记录它时,我该怎么办? – jecarfor

+0

可能不是一个好主意,但它取决于许多因素。如果异常风险极低,并且您很少或根本没有时间来测试和开发错误处理代码,那么这是您可能必须遵循的。 –

回答

1

我认为大多数在JavaScript中使用try catch的开发者都来自try-catch块很常见的语言,比如Java。

在JavaScript中,即使它支持,它也有很多缺点。

例如,即使回调本身是在try-catch块内词法定义的,它也不会捕获任何异步回调。

link将为您提供一些答案,为什么不建议滥用尝试在您的JS代码捕获。

我发现其中一个主要的缺点是像V8这样的JS引擎不会优化(暂时)try-catch内的任何代码。

思想:
对于我的身边,我已经习惯了周围的代码只使用尝试捕捉像

var x = JSON.parse(string); 

,并且只有这样操作的结果是没有强制要求的良好运作程序的其余部分,因为没有真正的错误处理程序替代这种操作(如果失败,代码停止工作)。