2015-10-29 84 views
1

在JavaScript中使用大的try-catch塊來包裝jQuery的文檔就緒事件中的所有代碼是否是一種很好的做法?JavaScript中的大try-catch塊

有些同事這樣寫

$(document).ready(function() { 
    try{ 
     //tons of code 
    } 
    catch(err){ 
     //post-exception statements 
    } 
}); 

所以他們處理的代碼

出現的任何錯誤代碼是這種做法是正確的?如果不是,我應該如何處理JavaScript中的錯誤?在異步函數中,我如何處理回調中的錯誤?特別是在文件準備。

+0

這是一個不好的方法。你不應該在一個巨大的try塊中包裝你的代碼(如果有錯誤,那麼你應該修復它而不是捕獲它!)錯誤處理是另一個業務。如果您正在討論諸如XHR中的超時或任何異步函數中的其他錯誤等錯誤,很可能它們將爲回調函數提供參數。 –

+0

@Derek朕會功夫我知道我應該修復任何錯誤,但是當涉及到知道發生了錯誤,例如我想記錄它時,我該怎麼辦? – jecarfor

+0

可能不是一個好主意,但它取決於許多因素。如果異常風險極低,並且您很少或根本沒有時間來測試和開發錯誤處理代碼,那麼這是您可能必須遵循的。 –

回答

1

我認爲大多數在JavaScript中使用try catch的開發者都來自try-catch塊很常見的語言,比如Java。

在JavaScript中,即使它支持,它也有很多缺點。

例如,即使回調本身是在try-catch塊內詞法定義的,它也不會捕獲任何異步回調。

link將爲您提供一些答案,爲什麼不建議濫用嘗試在您的JS代碼捕獲。

我發現其中一個主要的缺點是像V8這樣的JS引擎不會優化(暫時)try-catch內的任何代碼。

思想:
對於我的身邊,我已經習慣了周圍的代碼只使用嘗試捕捉像

var x = JSON.parse(string); 

,並且只有這樣操作的結果是沒有強制要求的良好運作程序的其餘部分,因爲沒有真正的錯誤處理程序替代這種操作(如果失敗,代碼停止工作)。