Как сделать так, чтобы все ошибки JavaScript записывались в консоль инструментов разработчика Chrome? - PullRequest
1 голос
/ 17 февраля 2012

Рассмотрим следующую функцию 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) }; повсеместно, но, поскольку я заранее не знаю, куда я буду добавлять опечатки, это не путь вперед.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Не могли бы вы показать свой образец, я попытался воспроизвести его в следующем фрагменте, и он прекрасно работает для меня:

<script>
function triggerError() {
   var something = undefined;
   // The next line will trigger 'TypeError: Cannot call ... of undefined'
   something.doesNotExist();
}
window.addEventListener("click", triggerError, true);
</script>
<body onclick="triggerError()">
</body>
1 голос
/ 17 февраля 2012

Вы можете использовать try catch:

function triggerError() {
    try{
        var something = undefined;
        // The next line will trigger 'TypeError: Cannot call ... of undefined'
        something.doesNotExist();
   }catch(ex){
        console.error(ex.message);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...