Как лучше ловить ошибки
Просидел вчера весь вечер, но внятного и надежного способа перехвата ошибок так и не нашел.
У меня два варианта:
window.addEventListener("error", function(e){
console.log("e.message: "+ e.message);
console.log("e.lineno: "+ e.lineno);
console.log("e.filename: "+ e.filename);
console.log("e.column: "+ e.column);
console.log("e.error: "+ e.error);
var stack = e.error ? e.error.stack || e.error.stacktrace || "NoStack" : "NoStack";
console.log("stack: "+ stack);
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
});
Что это дает: Код:
IE 11
window.onerror = function(mess, file, line, col, err){
var message = mess +' In File: '+ file +' On Line: '+ line;
var stack;
if(arguments.length == 5 && (err.stacktrace || err.stack)){
stack = err.stacktrace || err.stack;
}else{
stack = "NoStack";
}
console.log(message);
console.log(stack);
return true;
}
Тут уже интереснее Код:
IE 11проблема 1 - window.onerror = MegaHandler; - весь логгинг пошел лесом проблема 2 - IE и Opera чихают на все и выводят в консоль стандартные сообщения об ошибке. Видно, что максимум инфы можно выжать только если определить обработчик, как говорят тут https://developer.mozilla.org/en-US/...ndlers.onerror Но как сделать так, чтобы далее в коде нельзя было его переопределить? |
Кому надо - переопределят. Ничто не мешает подменить заранее addEventListener например.)
|
Цитата:
Еще вот что интересно. Где-то видел, что вместо message в обработчик ошибок может придти объект?! И вроде что-то там было про mtssage.srcElement или message.target... точно не помню и не могу найти этот пример. Чтож за объект туда может прилететь? PS воспроизвести такую ситуацию что-то не получается. Если ошибка в скрипте с другого домена, то в лог летит Script error line 0 и пустой URL |
| Часовой пояс GMT +3, время: 03:01. |