2009-07-08 34 views
6

我正在開發一個依賴於某些高級功能(DOM操作,AJAX,Flash通信等)的DHTML/Javascript應用程序。我非常關心功能 - 如果發生問題,即使在部署應用程序後,我也要確保知道爲什麼以及如何解決它們 - 另外,我想確保用戶能夠繼續使用應用程序,如果異常很嚴重,可能會減少功能。強大的Javascript異常處理

我目前有一個日誌記錄和異常處理系統,因此函數可以生成日誌,如果發現異常,所有日誌都會通過電子郵件發送給我。該系統運行良好,但我想使它更強大。我在尋找建議。

我的一個想法是將每個javascript函數的主體封裝在try/catch塊中,並在捕獲異常時記錄該函數的名稱,然後將錯誤引發到全局處理程序。但是,爲了追蹤發生異常的函數,這是很多代碼。

任何讓運行時異常更容易找到和重現的想法?

回答

4

不是處理增加ñ try/catch塊,以ň功能相反,它可能是更容易使用window.onerror事件。您可以使用的工具包有a series of examples。尤其是3rd

window.onerror = function (msg, url, line) { 
    alert('Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + line); 
    return true; 
} 

如果你喜歡一個堆棧跟蹤,你可以檢查出Eric Wendelin's(或Luke Smith's update)。這是我所知道的嘗試跨瀏覽器的少數人之一。

+1

我實際上已經捕捉到我的gloabl異常處理程序的所有異常,並且還使用他的堆棧跟蹤......問題是,在IE中(大多數錯誤發生時)跟蹤只是一長串「匿名函數」並沒有真正給我任何線索,以確定例外實際發生的位置... – Josh 2009-07-09 00:47:56