假设我有这段代码:
var myVar = 0;
function myFunctionOne() {
myVar = myVar + 2;
if(myVar <= 3) {
alert("all is good");
} else {
showError(myVar);
}
}
function myFunctionTwo() {
myVar = myVar + 2;
if(myVar <= 3) {
alert("all is good");
} else {
showError(myVar);
}
}
function myFunctionThree() {
//This should never run....
myVar = myVar + 2;
if(myVar <= 3) {
alert("all is good");
} else {
showError(myVar);
}
}
function showError(myVar) {
alert("Error Var is larger than 3. Var is" + myVar);
return false;
//This doesn't seem to stop anything
}
myFunctionOne();
myFunctionTwo();
myFunctionThree();
这也是小提琴:http://jsfiddle.net/dzjk44Lr/
我可以在showError()函数中添加什么,这会杀死任何后续的函数调用?在这个例子中,myFunctionThree();永远不应该跑。
我知道这是一个简单的例子,但我试图了解模块模式,在我的模块中,我有许多委托工作和修改变量的函数。因此,如果一个函数失败,或者被赋予非法变量,我希望一切都停止并向用户显示错误。例如,如果myFunctionOne()中存在错误,则继续执行任何其他代码是没有意义的。
我想,我正在寻找类似php exit()函数的东西。 任何关于如何做到这一点的建议,或者我应该如何做到这一点将不胜感激。
答案 0 :(得分:3)
您可以throw出错:
throw new Error("Error Var is larger than 3. Var is" + myVar);
答案 1 :(得分:1)
您可以使用javascript throw statement。
根据Mozilla MDN
当前函数的执行将停止(抛出后的语句将被执行),并且控制将被传递给调用堆栈中的第一个catch块。如果调用函数之间不存在catch块,则程序将终止。
示例:
throw "An error ocurred."
你也可以去pro并抛出这样的错误对象:
throw new MyAppError("custom error str", 128);