当出现 JavaScript 运行时错误时会发生什么?

6

我了解运行时错误的原因,现在我想了解浏览器在错误后如何表现。

如果在错误发生前已经绑定了事件处理程序,它们还能继续工作吗?

如果异步加载的脚本在运行时错误后完成加载,它能执行吗?

总的来说,运行时错误有多严重?


已经附加的事件处理程序在出现错误之前是否仍然有效?试一试就知道了! - Evan Davis
这取决于浏览器的行为,你几乎无法控制它。如果出现运行时错误,请尽力解决它,不要试图衡量它有多糟糕或依赖当前情况,即使现在可以工作,但明天可能就不能工作了。运行时错误意味着脚本中存在错误,你需要修复它。 - Lucius
3个回答

8
一个未捕获的运行时错误只会停止当前执行,这可能是一个脚本的执行或事件处理程序的调用。假设在处理事件时发生运行时错误,你可能遇到的唯一问题(除了没有真正处理事件)就是用户变量的一致性状态不稳定,如果你的事件处理程序修改了其中一些变量。除此之外,其他事件处理程序不会受到影响。因此,通常可以认为它不会对系统造成灾难性后果(我想我不必再记住修复错误是一个好习惯,并且将控制台淹没在错误信息中并不是一件好事)。

1
你可以使用try/catch/finally代码块。使用catch块,当运行时错误发生或非法操作发生时,您可以导航到错误内部并运行它。访问此链接,这里有关于try/catch/finally的更多信息http://www.javascriptkit.com/javatutors/trycatch.shtml
运行时错误取决于出现位置和代码在其发生时执行的操作,可能会是灾难性的。通过这种方式,您可以使整个应用程序崩溃或仅停止某些插件。

-1
每当打开一个网页时,所有脚本开始加载。如果任何脚本遇到运行时错误,则该脚本的执行将停止。这意味着浏览器将不会执行脚本中的任何进一步语句。您可以在浏览器的控制台窗口中找到这些错误。但是,您可以利用try catch块来处理发生的异常。 例如,请考虑以下脚本:
<script>
    var x=10, y=0;
    /*...............
    .................
    perform some other tasks here
    This will execute with no error
    .................
    ................*/
    var z=x/y; //here error occur
//below any statements will never execute.
{
    /*................
    ..................
    some operations
    this block will not execute because a runtime error occurs above.
    ..................
    ................*/
}
</script>

在语句var z=x/y;之后不会执行任何其他语句,因为发生了运行时错误。


8
实际上,这是合法的代码。在 JavaScript 中,允许进行除以0的操作并返回“无穷大”。 - Dykotomee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接