使用VS2008处理错误
问题描述:
function testFun() {
onerror = function() { log("caught the error"); return true; };
setTimeout(function() { throw "bad bad bad"; }, 300);
};
这是示例代码,但它演示了一个问题。 如果我在FF或IE7中运行它,它将打印出明智的“发现错误”消息(假设有一个合理的“日志”功能)。使用VS2008处理错误
但是,如果我在VS2008中调试代码,调试器将停止在带有以下消息的消息上:'Microsoft JScript运行时错误:抛出异常并且未捕获'。如果我说'继续'或'忽略',则不会生成日志消息。
这是一个问题,因为我正在使用的真实代码比这个大得多,我偶尔会想要调试一些东西。所以有两个问题:
- 任何知道为什么,我可以用一些我不知道的标志修改此行为?
- 我在做这个代码中我想做的事情(设置全局'onerror'处理程序)吗?如果没有,捕捉这类错误的适当模式是什么?
注意:如果我使用window.onerror代替这个问题没有区别。
答
根据this定义全局的onerror
函数在IE中不起作用。他们可能是在谈论IE6或更早版本,所以也许MS已经修复了IE7 - 但我不希望这会自动流向VS调试器。
无论如何,请尝试使用window.onerror = function
而不仅仅是onerror
。
如果这不起作用,你将不得不在我的计时器功能内使用try/catch
块。 PS:获取Firefox并使用萤火虫。调试器(和其他所有的东西)是很多比VS调试更好更好用