Подтвердить что ты не робот

Могу ли я сделать исключение в Javascript, что останавливает выполнение Javascript?

Я пытаюсь моделировать проблему, когда script, загружаемый с внешнего URL, останавливает выполнение каких-либо скриптов на моем сайте.

Я попытался смоделировать такую ​​проблему, вызвав функцию, которая не выходит. Я вижу ошибку в firebug, но разные скрипты на странице все еще выполняются.

Существуют ли различные ошибки в Javascripts? Если да: какая ошибка останавливается script выполнение? Мне нужен только этот ответ для Firefox.

ИЗМЕНИТЬ

Этот вопрос легко понять неправильно, но Rob W получил его: мне нужно выбросить исключение, и это исключение должно прекратить выполнение script.

4b9b3361

Ответ 1

Ответ на заголовок: Нет
Ответьте на" Существуют ли различные ошибки в JavaScript **: Да, см. MDN: Error
Синтаксические ошибки предотвратят выполнение целого блока script, другие ошибки (TypeErrors, Reference errors) остановят выполнение только после возникновения ошибки.

Различные блоки <script> выполняются отдельно. Вы не можете предотвратить выполнение второго блока, выбросив ошибку в первом блоке (Demo: http://jsfiddle.net/WJCEN/).

<script>Example: Syntax error in this script.</script>
<script>console.log('Still executed.')</script>

Кроме того, если ошибка обнаружена с помощью try-catch (demo: http://jsfiddle.net/WJCEN/1/), тогда ошибка даже не остановит выполнение целый блок.

try {throw 'Code';}catch(e){}
console.log('Still executed');


Не существует общего метода one-fit-all, чтобы остановить запуск всего кода. Для отдельных сценариев вы можете использовать некоторые трюки, чтобы предотвратить дальнейшее выполнение кода.

Пример 1 (демонстрация): Временная перезапись метода

1: <script>window._alert = alert;alert=null;</script>
2: <script>alert('Some code!');confirm('Not executing');</script>
3: <script>alert=_alert;delete window._alert;alert('Done!');</script>

Этот метод основан на том, что script 2 ожидает, что alert будет функцией. Мы переписали alert на не-функциональное свойство (script 1). script 2 выбрасывает a TypeError, а второй блок пропускается.
Мы восстанавливаем исходные значения в script 3.

Пример 2 (demo): Определите константный метод, который нельзя перезаписать.

4. <script>Object.defineProperty(window, 'test',{value:null});</script>
5. <script>var test=function(){alert('Test');};test();alert('What?');</script>

Этот метод основан на методе Object.defineProperty, чтобы эффективно определять постоянное значение. В строгом режиме объявление var test выдаст TypeError: "test доступен только для чтения".
Когда строгий режим не включается, TypeError будет сброшен в test(): "test не является функцией" (поскольку мы определили test как константу, в script 4).

Примечание. Последний метод работает некорректно с объявлениями функций (см. ошибка # 115452, Chrome 17)

Ответ 2

вы можете использовать объект ошибки, который поддерживает следующие два свойства:

name: The name of the error.
message: A description of the error.

например, чтобы остановить выполнение, вы можете использовать: throw new Error("myError");

Существуют ли различные ошибки в Javascripts?

Помимо общего конструктора ошибок, в JavaScript есть шесть других явных ошибок:

см. здесь об этих ошибках.

Ответ 3

Использование try catch finally block

Он выполнит трюк