Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Остановить выполнение скрипта (https://javascript.ru/forum/misc/1601-ostanovit-vypolnenie-skripta.html)

Nonam 22.08.2008 02:40

Остановить выполнение скрипта
 
Собственно сам вопрос, существует ли в JavaScript функция которая остановит дальнейшее выполнение скрипта, что то вроде exit в php, или как такое можно реализовать?

ZoNT 22.08.2008 09:32

window.stop()

Андрей Параничев 22.08.2008 14:31

ZoNT,
На сколько я знаю, window.stop() останавливает загрузку окна, а не выполняемый скрипт.

ZoNT 22.08.2008 14:38

вполне может быть - никогда не пользовался... :)

Infocatcher 23.08.2008 21:37

throw что-нибудь;, например,
throw "stop";

Если нужна возможность продолжения, то смотреть в сторону
window.alert(msg);
window.confirm(msg);
window.prompt(msg, defaultValue);
Впрочем, «window.» можно опускать.

Nonam 24.08.2008 04:04

Спасибо ребят, то что надо

twolf 01.05.2009 18:08

подниму темку.
Сейчас потребовалось тоже остановить выполнение скрипта в определенном месте.
но когда пишу throw "stop", firebug ругается "uncaught exception: stop"
как бы так остановить чтоб и жук не ругался ?

Gvozd 01.05.2009 18:23

throw new Error("stop");

вот так насколько я помню правильно бросать исключения
только теперь фаербаг все равно ругается)
Код:

throw new Error("stop");
НО!
если обернуть исключение в блок try-catch, на что он и расчитан, то соответсвенно никакой ошибки в фаербаге не выдается
ни при одном из двух вариантов
try
	{
	throw "dsf";
	//throw new Error("dsf");
	}
catch(e)
	{
	alert(e);
	}

оберните весь глобальный скрипт в исключение, и все будет норм

twolf 01.05.2009 18:31

в том то и дело что try-catch у меня ловит throw с ошибками, выдает пользователю сообщение и останавливает скрипт.
Типа такого:
try
    {
    // код
    if(Бог есть == true)  throw "верующий";
    }
catch(e)
    {
    alert(e);
    throw "stop"; // скрипт дальше не должен выполняться.
    }

а после алерта скрипт продолжит выполняться

Gvozd 01.05.2009 18:42

try{

try
    {
    // код
    if(Бог есть == true)  throw "верующий";
    }
catch(e)
    {
    alert(e);
    throw "stop"; // скрипт дальше не должен выполняться.
    }
//этот блок уже не выполнится

}catch(e){}

попробуй так.
подходит?

twolf 01.05.2009 18:55

не получиться. ведь последний catch(e) перехватит throw "stop" и продолжиться выполнение всего скрипта.

В принципе можно забить на эту ошибку в firebug, но как то перед js-коллегами неудобно :)

Gvozd 01.05.2009 18:58

я имел в виду , что в ту конструкцмю надо обернуть весь скрипт.
то ест до первого catch И после опследнего throw Ничего более

twolf 01.05.2009 19:01

ааа. понял, спасибо.

add: работает

x-yuri 01.05.2009 21:42

twolf, а может твою проблему можно решить более цивилизованными методами? Зачем такая штука понадобилась?

Riim 02.05.2009 00:13

Цитата:

Сообщение от Gvozd
я имел в виду , что в ту конструкцмю надо обернуть весь скрипт.

Если есть возможность обернуть весь скрипт, то зачем вообще исключения бросать. Разве обычный if не подойдет?

twolf 02.05.2009 12:00

Цитата:

Сообщение от x-yuri (Сообщение 18015)
twolf, а может твою проблему можно решить более цивилизованными методами? Зачем такая штука понадобилась?

ну а как?
ситуацию я пояснил. Идет выполнение скрипта, проверяются всяческие условия и если сработало назовем его - критическое условие, то скрипт должен тут же остановиться.
Кроме как throw "stop" я не знаю как остановить выполнение.

Kolyaj 02.05.2009 12:17

var $stop = {};
function long() {
    if (/* пора выходить */) {
        throw $stop;
    }
}

try {
    long();
} catch (e) {
    if (e != $stop) {
        throw e;
    }
}

twolf 02.05.2009 12:23

firebug на throw e ругнется

Kolyaj 02.05.2009 12:28

Цитата:

Сообщение от twolf
firebug на throw e ругнется

А он и должен, это же настоящая ошибка будет, а не выход из функции.

twolf 02.05.2009 16:19

у меня try находиться в long()
Но я не могу понять, как объект $stop останавливает скрипт.

Kolyaj 02.05.2009 16:43

Цитата:

Сообщение от twolf
Но я не могу понять, как объект $stop останавливает скрипт.

А что непонятно?

twolf 02.05.2009 19:33

Всё. Разобрался. Просто блок с catch не туда ставил.
Всем спасибо

x-yuri 04.05.2009 01:45

Цитата:

ну а как?
ситуацию я пояснил. Идет выполнение скрипта, проверяются всяческие условия и если сработало назовем его - критическое условие, то скрипт должен тут же остановиться
я говорил про то, о чем ты не рассказал. Что делает скрипт, который надо остановить?


Часовой пояс GMT +3, время: 21:36.