0
function testFun() {
    onerror = function() { log("caught the error"); return true; };
    setTimeout(function() { throw "bad bad bad"; }, 300);
};

这是示例代码,但它演示了一个问题。如果我在 FF 或 IE7 中运行它,它会打印出合理的“捕获错误”消息(假设一个合理的“日志”功能)。

但是,如果我在 VS2008 中调试代码,调试器会在抛出时停止并显示以下消息:“Microsoft JScript 运行时错误:抛出异常且未捕获”。如果我说“继续”或“忽略”,则不会生成日志消息。

这是一个问题,因为我正在使用的实际代码比这大得多,而且我偶尔会想要调试一些东西。所以两个问题:

  1. 任何人都知道为什么,我可以用一些我不知道的标志来修改这种行为吗?
  2. 我是否在此代码中做我认为我正在做的事情(设置全局“onerror”处理程序)?如果不是,那么捕获此类错误的适当模式是什么?

注意:如果我使用 window.onerror 代替,这个问题没有区别。

4

1 回答 1

2

根据这个定义,全局onerror函数在 IE 中不起作用。他们可能在谈论 IE6 或更早版本,所以也许 MS 已经为 IE7 修复了它——但我不希望这会自动流向 VS 调试器。

无论如何,尝试使用window.onerror = function而不仅仅是onerror.

如果这不起作用,try/catch我猜你将不得不在你的定时器函数中使用一个块。

PS:获取firefox并使用firebug。调试器(和其他所有东西)VS 调试更好更好用

于 2009-03-01T20:01:51.590 回答