Могу ли я положить конец тихой смерти функций JavaScript?(SetTimeout проглатывает исключения?) - PullRequest
9 голосов
/ 12 сентября 2011

Время от времени какая-то функция JavaScript, над которой я работаю, просто тихо закрывалась, и ничто не указывало бы на то, что что-то необычное произошло.

Это сводит меня с ума.Конечно, должен быть способ включить какой-нибудь флаг «Я разработчик», чтобы подобные вещи выдавали большое жирное «Что-то не так!» сообщение?

Примерфункция:

window.setTimeout(function() {
    alert('Entered!');
    foo;
    alert('Exited!');
}, 300);

На моем Firefox 6, это показывает только первое предупреждение.Журнал ошибок остается полностью пустым.Могу ли я получить более полезное поведение из Firefox?

Ответы [ 3 ]

5 голосов
/ 12 сентября 2011

Я подозреваю, что проблема может заключаться в следующем: https://developer.mozilla.org/en/Exception_logging_in_JavaScript. Новая логика, которая решает, какие исключения должны отображаться, имеет некоторые недостатки (особенно когда задействованы расширения).

Вы можетеперейдите к about:config и создайте логическое предпочтение dom.report_all_js_exceptions.Это гарантирует, что в консоли ошибок появится намного больше исключений - вероятно, больше, чем вы хотели бы видеть.

Редактировать : Существует также проблема, которая приводит к тому, что Adblock Plusпроглотить некоторые ошибки: ошибка 653533 .Я не уверен, распространяется ли он на преф, который я упоминал выше.

2 голосов
/ 12 сентября 2011

Вы можете попробовать использовать попытку -> перехватить кусочки кода, чтобы увидеть, что вылетает?

Взгляните на эту ссылку: http://www.w3schools.com/js/js_try_catch.asp

Например; Вы можете получить предупреждение с описанием ошибки.

1 голос
/ 12 сентября 2011

Попробуйте разработчик Chrome в дополнение к Firebug: Ctrl-Shift-J в Chrome для Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...