2015-04-01 151 views
2

我明白是什么原因导致运行时错误。我想了解浏览器之后的行为。当发生javascript运行时错误时会发生什么?

错误发生之前附加的事件处理程序是否仍然有效?

如果一个脚本加载的异步在运行时发生错误后能够执行吗?

基本上,运行时错误的灾难性程度如何?

+0

_将事件处理程序附加到错误仍然有效之前?_试试看! – Mathletics 2015-04-01 15:26:48

+0

这取决于浏览器的行为,你很少或根本没有控制。如果你有一个运行时错误,你最好解决它,不要试图衡量它有多糟糕,或者依赖于现在可能适用的当前情况,但明天可能无法工作。运行时错误意味着脚本中存在错误。你需要修复它。 – Lucius 2015-04-01 15:31:11

回答

3

的uncatched运行时错误只是停止当前执行,这可能是

  • 脚本
  • 事件处理程序的调用的执行

假设你同时运行时错误处理一个事件,如果你的事件处理程序修改了其中的一些,你可能会遇到的唯一问题(除了没有真正处理事件)是用户变量的不一致状态。除此之外,其他事件处理程序不会受到影响。

所以它通常可以被认为是非灾难性的(我想我不必记住这是一个很好的做法,无论如何修复错误,并控制台错误是不是一件好事)。

0

每当网页打开时,所有脚本开始加载。如果任何脚本遇到任何运行时错误,则停止执行该脚本。这意味着脚本中的任何其他语句都不会被浏览器执行。您可以在浏览器的控制台窗口中找到这些错误。但是,您可以使用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;将执行。

2

您可以使用try/catch/finally块。使用catch块可以在错误内导航,并且在发生运行时错误或发生非法操作时它将运行。请访问此链接,这里有一些关于try/catch/finally的更多信息http://www.javascriptkit.com/javatutors/trycatch.shtml

运行时错误可能是灾难性的,取决于它发生的地方以及代码发生的时间。这样你就可以崩溃所有的应用程序,或者停止一些插件。