2009-03-01 61 views
0
function testFun() { 
    onerror = function() { log("caught the error"); return true; }; 
    setTimeout(function() { throw "bad bad bad"; }, 300); 
}; 

這是示例代碼,但它演示了一個問題。 如果我在FF或IE7中運行它,它將打印出明智的「發現錯誤」消息(假設有一個合理的「日誌」功能)。使用VS2008處理錯誤

但是,如果我在VS2008中調試代碼,調試器將停止在帶有以下消息的消息上:'Microsoft JScript運行時錯誤:拋出異常並且未捕獲'。如果我說'繼續'或'忽略',則不會生成日誌消息。

這是一個問題,因爲我正在使用的真實代碼比這個大得多,我偶爾會想要調試一些東西。所以有兩個問題:

  1. 任何知道爲什麼,我可以用一些我不知道的標誌修改此行爲?
  2. 我在做這個代碼中我想做的事情(設置全局'onerror'處理程序)嗎?如果沒有,捕捉這類錯誤的適當模式是什麼?

注意:如果我使用window.onerror代替這個問題沒有區別。

回答

2

根據this定義全局的onerror函數在IE中不起作用。他們可能是在談論IE6或更早版本,所以也許MS已經修復了IE7 - 但我不希望這會自動流向VS調試器。

無論如何,請嘗試使用window.onerror = function而不僅僅是onerror

如果這不起作用,你將不得不在我的計時器功能內使用try/catch塊。 PS:獲取Firefox並使用螢火蟲。調試器(和其他所有的東西)是很多比VS調試更好更好用