window.onerror 和 JavaScript 控制台错误

7
我有以下代码来捕获JavaScript中的错误:

我有以下代码来捕获JavaScript中的错误

<script type="text/javascript">
   window.onerror = function(msg, url, linenumber) {
      console.log('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
      return true;
   }
</script>

我打开Chrome开发者控制台,准备通过随机的JavaScript代码生成ReferenceError。比如说:

person.run();  // person object does not exist

当在控制台中打印 Uncaught ReferenceError: person is not defined 时,它不会被 window.onerror 捕获。为什么呢?


代码应该能够正常运行,你确定在加载onerror之前没有运行person.run吗?或者还有其他可能会干扰的因素吗? - Master Slave
我只是在Chrome开发者控制台中键入person.run()。 我想知道由您自己尝试代码而在Chrome开发者控制台中发生的错误是否被window.onerror捕获? - Fizer Khan
尝试 window.alert(window.foo) - mplungjan
@mplungjan 你是什么意思? - Fizer Khan
尝试一些可能会引发窗口错误的东西。 - mplungjan
2个回答

3

0

适用于控制台或其他浏览器应用程序

 document.onerror=function (errorMsg, url, lineNumber,colNumder,error){
    console.log('OnError');
     return true
}

function consoleErrorTrap(call){
    try{
        return call();
    } catch(e){
        let event= new ErrorEvent('error',{error:e})
        document.dispatchEvent(event);
    }   
}

consoleErrorTrap(()=>{
    throw new Error()
})



如果consoleErrorTrap函数在DOM或已加载的脚本的上下文中声明,则可以使用call()代码而不需要try{}catch({},因为错误会在DOM上下文中冒泡并自动运行触发器(dispatchEvent)。 - AlexeyP0708

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接