如何中止或停止JavaScript执行?

时间:2015-05-05 20:51:04

标签: javascript jquery error-handling compiler-errors

我在一个例子中工作,并且在某些时候(当某些特定事件发生时)停止执行javascript代码。

这是我检测到错误的行(DEMO处的行号36):

  if(error_print === null){
                s += "errors+='"+"You have error in row :" + (i+1) + "';";
                //here I want to stop the code execution

            } else{ //continue...}

所以我想:

1-在检测到此错误时停止代码执行

2-从

之前打印的消息中清除#output textarea

(所以如果发生错误,我只希望在#errors textarea中出现消息错误。所以我不希望#output文本区域具有此值:

This " is my first program 
My name is XXX

但是我希望在检测到错误后它是空的。

我尝试使用return;throw new Error('You have an error');,但这些功能无效。你能帮帮我吗?提前谢谢。

Here is the demo you can play with.

1 个答案:

答案 0 :(得分:1)

首先,请允许我对你小提琴中的代码做一些评论:

  • 如果在一段时间内,如果在一个if里面,如果在一个函数里面,那么......这只是一个可怕的代码来读取和等待发生的错误。请重构该代码(使用早期返回,将其划分为函数,......)。我的经验法则永远不会超过2级。好的书面代码应该记录自己,我不能说你的代码是自我解释的。
  • 为什么要插入该脚本集团?我觉得完全没必要。它几乎和使用eval()...
  • 一样糟糕
  • 尝试使用合理的变量名称。在编写代码时,s似乎很清楚,但我保证在六个月内你不得不去寻找一个bug。

请注意,我只是想帮助你,而不是试图让你失望。

至于你的问题,为什么不在某处保留错误布尔值。将其默认为false,并在发生错误时将其设置为true。在输出结果之前,只需检查该布尔值的状态。如果是,则不输出任何内容。这应该是迄今为止最简单的解决方案。

var hasErrors = false;
...
// an error occurs
if (this.notRight) { hasErrors = true; }
...
if (! hasErrors) {
   $('#output').html(output);
}