Подтвердить что ты не робот

Глобальный обработчик исключений 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 не отображается.

4b9b3361

Ответ 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 Не уверен, что это доступно во всех браузерах.