抛出假的错误会停止脚本吗?

时间:2012-05-28 00:15:42

标签: javascript

之前我没有使用throw new ReferenceError,当我使用时,我发现它会停止脚本:

alert("a");  //Yes
throw new ReferenceError("Error.");  //Yes
alert("b");  //Nope

http://jsfiddle.net/DerekL/uKEZ4/

我只想在控制台中抛出错误而不停止整个脚本。我试着这样做:

alert("a");  //Yes
try{
    throw new ReferenceError("Error.");  //Yes
}catch(e){}
alert("b");  //Yes

http://jsfiddle.net/DerekL/uKEZ4/1/

这样可行,但我不认为这是最好的方法。在不停止脚本的情况下显示错误消息的最佳方法是什么?

PS:

console.warn("Error");

无法在IE上运行。

2 个答案:

答案 0 :(得分:3)

此行为是设计使然。 JavaScript中的异常处理就像在许多其他语言中一样:C#,Java,Ruby等。

当抛出异常时,展开堆栈,跳过代码执行,直到它被catch(它将会“恢复“执行”。如果没有catch,那么它只是完全跳过代码的结尾(脚本元素,源文件,REPL等)。 finally也是案例中的一种选择(“恢复”执行),但没有像On Error Resume Next那样的东西;那不是JavaScript。

没有什么可以改变这种行为。 (我建议只shimming IE支持console。)

答案 1 :(得分:0)

Error只是一个简单Object。无论你throw,他们总是打破执行流程。