【问题标题】:How do I make sure all JavaScript errors are written to the Chrome Developer Tools Console?如何确保所有 JavaScript 错误都写入 Chrome 开发者工具控制台?
【发布时间】:2012-02-20 16:27:46
【问题描述】:

考虑以下 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) };,但由于我事先不知道我会在哪里添加错别字,所以这不是一个前进的方向。

【问题讨论】:

  • 这听起来像是 Chrome 中的一个错误。你应该在new.crbug.com 报告它
  • 嗯,我确实在 Chrome 中收到一条错误消息 - live demo: jsfiddle.net/zzcYH/1

标签: javascript google-chrome-devtools


【解决方案1】:

您能否展示您的示例,我尝试在以下 sn-p 上重现它,它对我来说非常好:

<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>

【讨论】:

    【解决方案2】:

    您可以使用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);
       }
    }
    

    【讨论】:

    • 谢谢,但我不知道我会在哪里添加我的错别字,所以很遗憾,这不会有太大帮助。我现在已经在问题中明确表示我正在寻找不涉及更改代码的修复程序。
    猜你喜欢
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多