2015-04-23 62 views
1

我正在開發我的第一個Javascript應用程序,我試圖去面向對象。 有一個基本的閉包返回我的主要對象和我調用該對象中休息的每個函數。一些僞代碼是這樣的:Javascript結構化錯誤處理

primary = (function(){ 
var object = { 
    doSomething = function(){}; 
}, 
return {intance:function(return object)} 
}); 

//invocation 
primary.instance().doSomething(); 

我所試圖實現的是一個錯誤處理功能附加到我的object,以便每當有一個內部錯誤,毫無遺漏的是,我不必須將每個函數調用包裝在trycatch塊中。

我試過object.onerrorerror繼續window object。也許我錯了這個概念。我試圖在Github上搜索一些包含結構化錯誤處理的簡單框架,但沒有運氣。我在PHP中很熟悉這一點,但是到目前爲止我還沒有在Javascript中完成這項工作。有人能告訴我一個例子,它是如何完成的嗎?

編輯:我知道,結構化的錯誤處理更進一步,我只是想獲得一個根處理,這樣就沒有錯誤/異常可以傳遞到window object

+3

取決於你的目標是什麼,但我認爲你做錯了,並弄錯了。你正在創建一個能夠完成所有事情的上帝對象,這通常不是一件好事,而且在JavaScript錯誤中通常會停止執行,這很好,通常不應該爲每個可能的錯誤都保證try/catch塊。如果您希望發生錯誤,請處理髮生的錯誤,否則請假設您的代碼正常工作。 – adeneo

+0

是doSomething在裏面拋出一個錯誤或一些服務?因爲你沒有在方法中傳遞任何參數,所以我認爲它是另一種服務可能是異步的 - 在這種情況下,你不應該拋出錯誤,因爲在錯誤發生之前,某些東西會完成執行。 – webduvet

+0

忽略用於您的應用的設計模式以及如何實現您的錯誤處理程序,代碼中存在很多語法錯誤。 – andybeli

回答

0

error事件處理沒有嘗試捕捉塊停止執行腳本(除已調用的任何異步函數外)。

您可以通過捕捉它們document.body或多個特定對象抑制(非Ajax,非語法)錯誤,並阻止他們被拋出給用戶(或達到window對象)通過使用e.preventDefault()return false,並且通過將事件對象作爲參數傳遞給全局/對象處理程序(用於檢查或記錄) - 但是這些選項中的任何一個都會使腳本執行停止超出錯誤點。這是try catch塊的主要優點,據我所知,沒有辦法解決這個問題。