Ответ 1
window.onerror
работает в Chrome (см. jsfiddle - http://jsfiddle.net/PWSDF/), но, видимо, не в консоли - что имеет смысл.
Я пытаюсь добавить событие onerror на свой сайт.
window.onerror = function() {
alert("an error");
}
Но все, что я получаю, это:
notThere();
ReferenceError: notThere is not defined
Что мне не хватает?
Браузер: Chrome 26.0.1410.64 м
Шаги для воспроизведения:
window.onerror
работает в Chrome (см. jsfiddle - http://jsfiddle.net/PWSDF/), но, видимо, не в консоли - что имеет смысл.
window.onerror не запускается, когда консоль напрямую генерирует ошибку. Его можно запустить с помощью setTimeout
, хотя, например, setTimeout(function() { notThere(); }, 0);
Возможный дубликат: Chrome: появится ли ошибка в коде, вызванном из окна запуска консоли dev.onerror?
Некоторые другие причины, по которым вы не сможете обрабатывать ошибки в window.onerror
(кроме указанных):
window.onerror
после вас.Если вы используете Angular, ошибки не пройдут через window.onerror
. Вы должны обращаться с ними, используя этот factory:
.factory('$exceptionHandler', function() {
return function errorCatcherHandler(exception, cause) {
console.error(exception);
if (window.OnClientError) window.OnClientError(exception);
};
})
См:
https://docs.angularjs.org/api/ng/service/ $exceptionHandler
http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html