Глобальный обработчик исключений JavaScript (в Chrome) - PullRequest
12 голосов
/ 05 марта 2010

Как мне переписать глобальный обработчик исключений в javascript, чтобы он стал обработчиком верхнего уровня для всех неперехваченных исключений?

РЕДАКТИРОВАТЬ: окно.онеррор не работает, код:

<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>

Кстати тестирую на хроме. Консоль разработчика регистрирует необработанное исключение, но alert () в window.onerror не появляется.

Ответы [ 4 ]

15 голосов
/ 07 марта 2010

С 2013 года Chrome поддерживает window.onerror. (У меня есть комментарии версии 25, подразумевающие также более ранние версии)

Я обернул JQuery с помощью каррирования, чтобы создать прокси, который всегда выполняет try...catch в функциях JQuery.

Я использую его в www.js-analytics.com , однако решение подходит только для сценариев JQuery.

До 2013 года Google Chrome не поддерживал window.onerror, очевидно, он не был реализован в WebKit.

3 голосов
/ 05 марта 2010
window.onerror = function(errorMsg, url, lineNumber) {
    // code to run when error has occured on page
}
1 голос
/ 19 декабря 2018

Поддержка Chrome для window.onerror

  • Я полагаю, что поддержка началась в Chrome v10 ( Chromium Issue 7771 ), но похоже, что "полная" поддержка с поддержкой CORS была решена вокруг Chrome 30+ ( Chromium Issue 159566 )
  • caniuse.com в настоящее время не отслеживает эту функцию JS ( GitHub Issue 11999 ) ... чтобы добавить поддержку этой проблемы, войдите в GitHub и «отреагируйте» с помощью «Thumbs Up» на оригинальный пост ( не +1 в комментариях .)

Текущая документация Google для window.onerror

0 голосов
/ 05 марта 2010

Возможно, вы ищете window.onerror Не уверен, доступно ли это во всех браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...