考虑以下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) };
,但由于我事先不知道我将在哪里添加拼写错误,这不是前进的方法。
答案 0 :(得分:1)
您可以使用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);
}
}
答案 1 :(得分:1)
你能展示你的样本,我试着在下面的片段中重现它,它对我来说非常好:
<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>