2015-08-25 3 views
0

Скажет, у меня есть этот код:Как я могу остановить все выполнение кода в javascript?

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

Вы не можете сделать что-то вроде php 'exit()', потому что вы не собираетесь закрывать браузер. Все это звучит для меня так, как будто вам нужен дизайн обработки ошибок для вашего кода, а не бросать руки вверх в ошибку и просто прервать все. Вы можете «выбросить» исключение, и это остановит текущий поток выполнения (вплоть до любого обработчика исключений, который может поймать исключение), но не всегда лучший способ разработки кода. – jfriend00

ответ

3

throw Вы можете об ошибке:

throw new Error("Error Var is larger than 3. Var is" + myVar); 
+0

Итак, это способ сделать это, или это просто решение моей проблемы? Я имею в виду, это приемлемый синтаксис JavaScript? Можно ли иметь модуль с множеством функций, которые зависят друг от друга, и если кто-то терпит неудачу, я убью все ниже? – Amir

+1

@Amir - 'throw' имеет место в Javascript при правильном использовании. Мне кажется, что вам нужно разработать правильную обработку ошибок в своих функциях, чтобы можно было встретить ошибку, вернуть эту ошибку своим вызывающим абонентам и позволить им решить, как действовать или не основываться на ошибке. – jfriend00

+0

@ jfriend00 У вас есть пример реальной жизни? Я только начинаю с этого и хочу принять хорошие практики. Что вы имеете в виду, возвращая ошибку своим абонентам. В приведенном выше примере, кто будет показыватьError (myVar), что-нибудь вернет? И с какой целью? – Amir

1

Вы можете использовать javascript throw statement.

Согласно Mozilla MDN

Execution of the current function will stop (the statements after throw won't be executed), and control will be passed to the first catch block in the call stack. If no catch block exists among caller functions, the program will terminate.

Пример:

throw "An error ocurred." 

Вы также можете пойти про и бросить объект ошибки, как это:

throw new MyAppError("custom error str", 128); 
Смежные вопросы