为什么有些javascript错误可以恢复,有些则没有

时间:2012-06-13 16:52:48

标签: javascript

我在我的网站上使用了大量的javascript,当然有时在构建代码和错误时会出现问题。有时页面会遇到错误,所有脚本都会停止工作。如果在页面加载期间触发错误,则尤其如此。有时,一些错误似乎不会阻止页面运行更多脚本。

然后有时我会看一下网页上的一些页面,按F12,我看到该页面有5-10个javascript错误,但只是保持工作看起来很好。

是什么让某些javascript错误致命而其他错误可以恢复?

感谢。

2 个答案:

答案 0 :(得分:4)

当加载时浏览器评估<script>块时,除了解析之外,代码实际上是执行。因此,该过程中的异常会导致整个脚本块中止。如果后续代码依赖于应该由此类脚本建立的全局符号,但不是由于错误,则其他脚本也可能失败。

但是,处理某些事件时的错误只会导致事件循环中止。因此,“click”处理程序中的代码错误只是意味着在单击某些内容时应该发生的某些事情根本不会发生。否则,页面可以继续正常工作。

答案 1 :(得分:3)

即使在try..catch块内,解析错误也是致命的,因为它无法可靠地找到try的结尾,或者确实发现错误之外的任何其他内容。

其他错误可以捕获。在try..catch块内,catch将收到有关错误的信息。在出现错误情况之后,该块中的其余代码不可靠且可能不安全。但是其他<script>标记是分开的,因此可以毫无问题地运行。如果它有帮助,您可以想象<script>标记意味着以下内容:

<script>
    try { // implied
        // your code here
    } catch(e) {throw e;} // implied
</script>