#javascript #error-handling
#javascript #обработка ошибок
Вопрос:
Я хочу регистрировать ошибки JavaScript, поэтому я переопределяю window.onerror
следующим образом:
window.onerror = function(message, file, lineNumber) {
var browser_ = encodeURI(navigator.appVersion);
var error_ = encodeURI("msg:" message "ntfile:" file "ntln:" lineNumber);
var user_ = encodeURI("");
...
return false;
}
Я видел, как некоторые люди возвращались true
, а некоторые возвращались false
. Что правильно и почему? В одном сообщении упоминалось что-то о том, что вам нужно вернуть true, иначе Firefox обработает ошибку по-своему. Что??
Ответ №1:
Из MDN на window.onerror
:
Когда функция возвращается
true
, это предотвращает запуск обработчика событий по умолчанию.
Смотрите также Проблему 92062 в chromium:
В Chrome возврат
true
из window.onerror позволяет ошибке распространяться, а возвратfalse
подавляет ее.
Это обратное поведение в Firefox и IE, где возврат ‘true’ подавляет ошибку, но возвратfalse
распространяет ее.
Примечание: упомянутая выше проблема была исправлена, поведение теперь такое, как указано в MDN для всех браузеров.
Комментарии:
1. Поведение Chrome на его лицевой стороне, похоже, соответствует тому, как я ожидал, что это сработает … «ошибка? false!»
2. @Tomasz Ты не ответил, что я должен сделать! Кроме того, какой пример того, где вы хотели бы распространить ошибку? Я думаю, это новый вопрос!
3. Opera 11.60 ведет себя как Chrome.
4. Я только что опробовал это в FF и в Chrome, они ведут себя противоположно друг другу. Эффект «предотвращает запуск обработчика событий по умолчанию» заключается в том, что инструменты разработки либо сообщат об ошибке, либо нет.
5. Похоже, это больше не соответствует действительности (?). Возврат true в Chrome и Firefox останавливает распространение обработчика.