之前我没有使用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上运行。
答案 0 :(得分:3)
此行为是设计使然。 JavaScript中的异常处理就像在许多其他语言中一样:C#,Java,Ruby等。
当抛出异常时,将展开堆栈,将跳过代码执行,直到它被catch
(它将会“恢复“执行”。如果没有catch
,那么它只是完全跳过代码的结尾(脚本元素,源文件,REPL等)。 finally
也是案例中的一种选择(“恢复”执行),但没有像On Error Resume Next
那样的东西;那不是JavaScript。
没有什么可以改变这种行为。
(我建议只shimming IE支持console
。)
答案 1 :(得分:0)
Error
只是一个简单Object
。无论你throw
,他们总是打破执行流程。