Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2014, 19:18
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Несколько вопросов о window.onerror
Итак... если в самом начале подключить скрипт
function ErrorHandler(message, file, line, col, error){
    // обработка ошибки
}
window.onerror = ErrorHandler;

То все ошибки и непойманные исключения попадут в наш обработчик.
Есть здесь несколько минусов:
- если далее в коде, в каком-то из подключенных файлов кто-то переопределит window.onerror, то все - наш обработчик пойдет лесом
- стандартно имеем только 3 параметра: текст ошибки, файл, номер строки

4 и 5 параметры поддерживают не все браузеры. В FF есть только три параметра, в Chrome все 5, в иных только 4.
Самый интересный - 5 параметр, сам объект ошибки. Он нужен для получения стека - error.stack.
Если 5 параметра нет, то и стека у нас нет, за исключением IE - в нем псевдо стек можно построить через задницу
function ErrorHandler(message, file, line, col, error){
    if(typeof error === "undefined"){
        var fn = ErrorHandler;
        while(fn = fn.caller){/***/}
    }
}

В других браузерах ErrorHandler.caller === null

Ну и вопросы:

1. Как надежно определить свой обработчик для window.onerror
2. Как внутри window.onerror получить трассировку

Если сделать так
window.addEventListener("error", function(e){
    // ...
});

То поймать ошибку в FF и Opera не удастся, так как в FF в обработчик передается пустой Event вместо ErrorEvent, а Opera почему-то вообще не заходит в обработчик.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов jQuery DS_ Общие вопросы Javascript 11 09.11.2012 17:02
Несколько вопросов (Sandr) Общие вопросы Javascript 25 08.07.2011 09:31
Несколько простых вопросов от чайника Lucidmind Общие вопросы Javascript 2 06.05.2011 11:59
Несколько вопросов начинающего vitaver Общие вопросы Javascript 8 23.12.2010 20:22
Несколько вопросов про таймер ВэйДлин Общие вопросы Javascript 19 06.08.2010 01:16