Если я переопределяю window.onerror в javascript, должен ли я возвращать true или false?

#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 останавливает распространение обработчика.