Рассмотрим следующую функцию JavaScript:
function triggerError() {
var something = undefined;
// The next line will trigger 'TypeError: Cannot call ... of undefined'
something.doesNotExist();
}
При прямом запуске triggerError();
в консоль инструментов разработчика Chrome красным цветом записывается следующая ошибка:
TypeError: Cannot call method 'doesNotExist' of undefined
Однако, когда triggerError();
запускается из прослушивателя событий, в консоль не записывается никаких ошибок (вызов функции просто тихо умирает при something.doesNotExist();
), что затрудняет отладку в случае опечаток и т. Д.
Как сделать так, чтобы все ошибки записывались в консоль инструментов разработчика Chrome, включая ошибки, генерируемые в коде, который запускается из прослушивателей событий / обратных вызовов?
Один очевидный обходной путь - добавить try { ... } catch (x) { console.log(x) };
повсеместно, но, поскольку я заранее не знаю, куда я буду добавлять опечатки, это не путь вперед.