Глобальный обработчик исключений javascript (в Chrome)
Как переписать глобальный обработчик Exception в javascript, чтобы он стал обработчиком верхнего уровня для всех исключенных исключений?
EDIT: window.onerror не работает, код:
<HTML>
<HEAD>
<script language='javascript'>
window.onerror = function (em, url, ln) {
alert(em + ", " + url + ", " + ln);
return false;
}
function fGo() {
try
{
var a = b; // error here : b not defined
}
catch (e)
{
throw e;
}
}
</script>
</HEAD>
<BODY>
<button onclick='fGo()'>GO</button>
</BODY>
</HTML>
Я тестирую на хроме, между прочим. Консоль разработчика регистрирует неперехваченное исключение, но предупреждение() в window.onerror не отображается.
Ответы
Ответ 1
С 2013 года Chrome поддерживает window.onerror
. (У меня комментарии версии 25 подразумевают и более ранние версии)
Что я сделал, так это обернул JQuery с помощью каррирования, чтобы создать прокси, который всегда делает try...catch
функции JQuery.
Я использую его на www.js-analytics.com, однако решение подходит только для сценариев JQuery.
До 2013 года Google Chrome не поддерживал window.onerror
, по-видимому, он не был реализован в WebKit.
Ответ 2
window.onerror = function(errorMsg, url, lineNumber) {
// code to run when error has occured on page
}
Ответ 3
Поддержка Chrome для window.onerror
- Я полагаю, что поддержка началась в Chrome v10 (выпуск Chromium 7771), но похоже, что "полная" поддержка с поддержкой CORS была решена вокруг Chrome 30+ (Chromium Issue 159566)
- caniuse.com в настоящее время не отслеживает эту функцию JS (GitHub Issue 11999)... чтобы добавить поддержку к этой проблеме, войдите в GitHub и "отреагируйте" с "Thumbs Up" на исходное сообщение (не +1 в комментариях.)
Текущая документация Google для window.onerror
Ответ 4
Возможно, вы ищете window.onerror Не уверен, что это доступно во всех браузерах.