Chrome:从开发控制台调用的代码中的错误是否会触发window.onerror?

UpT*_*eek 20 javascript google-chrome

我正在尝试调试window.onerror的处理.我创建了一个会抛出错误的函数(调用另一个不存在的函数).我试过从Chrome的Web开发控制台调用第一个函数 - 在控制台中报告错误,但我们的window.error处理函数似乎没有被调用.(我已经验证了window.onerror在控制台中引用了我们的错误处理代码).

在开发控制台中调用的函数中的错误是否不会触发window.onerror?

Pau*_* S. 35

他们没有(在我测试的Chrome中),简单的测试方法是

window.onerror = function () {console.log('error!');};
throw new Error();
// Error
Run Code Online (Sandbox Code Playgroud)

但是,如果你推迟他们,你可以让他们这样做

window.setTimeout(function() {throw new Error()}, 0);
// error!
// Uncaught Error
Run Code Online (Sandbox Code Playgroud)

  • 哦,这很有趣。感谢您的澄清和解决方法! (2认同)
  • @RobW 有趣,可能适用于其他地方 +1,但问题就变成了“‘控制台’的起源是什么?” 如果您说的是真的,这不是一个简单的答案,否则 _XHR_ 将无法从控制台运行。我认为更有可能的是 `console` 被包裹在它自己的 `try..catch` 中。 (2认同)
  • @RobW - 我认为外部脚本仍然调用 window.onerror,但是错误对象被剥夺了所有有用的信息?例如。这个问题中描述的问题:http://stackoverflow.com/questions/5913978/cryptic-script-error-reported-in-javascript-in-chrome-and-firefox (2认同)