Возникла задача написания кода, который перехватывал бы любые исключения и ошибки JS в браузере, в том числе, ошибки, сгенерированные вручную при помощи throw window.onerror на это, увы, не способен. Кто сталкивался с такой проблемой, или, может, знает, как её решить?
UPD:
Как оказалось, window.onerror перехватывает throw, но window.onerror можно перезаписать, что в моей ситуации если не неприемлемо, то крайне нежелательно. Поэтому изначально я планировал использовать для этой цели addEventListener, но, как назло, он, по всей видимости, не перехватывает throw. Может кто-то знает какие-то еще способы?
UPD:
Прошу прощения у всех, кого побеспокоил за ложный вызов. Ситуация оказалась следущей: И window.onerror, и addEventListener успешно перехватывают throw, но только, когда они вызваны через глобальный код. Допустим, через onclick, или в теге <script>. Если же вызвать throw в консоли, то ничего не произойдет. Равно, как и если написать код с неправильным синтаксисом, или с вызовом неопределенной переменной или функции. С меня всем по плюсику, вопрос закрыт, всем спасибо!
Если я правильно понял -
window.addEventListener('error', event => {
console.log(`ошибка перехвачена: ${event.error.toString()}`);
});
throw "some exception";
window.addEventListener('error', event => {
console.log(`ошибка перехвачена: ${event.error.toString()}`);
});
notExistsProp.notExistsMethod();
И пример иллюстрирующий работу onerror -
window.onerror = function(errorMsg, url, lineNumber) {
console.log(`ошибка перехвачена: ${errorMsg}`);
}
throw "some exception";
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости