JS異常處理小結

 

有人說:JavaScript就是爲了取悅用戶而給開發者帶來痛苦的一項技術。頁面中,錯誤在所難免。一般而言,頁面錯誤大致分爲兩種:程序內部的邏輯或者語法錯誤、運行中數據錯誤。前者多稱之爲錯誤(error),後則則多稱之爲異常(Exception)。

       處理異常最常用的方式:try-catch-finally,通過異常處理,可以避免程序停止運行,從而具有了一定的自我修復能力。具體使用我就不多說,下面就異常處理中需要注意的地方小結一下。

       在使用jQuey獲取一個對象的屬性時,如果該對象不存在,jQuery有可能會拋出異常,在有些我們不想讓用戶看到這樣的異常,最常用的方式就是先判斷該對象是否存在。如果不假思索,我們很有可能會使用如下方式:

if ($("#objID")){ }

 

 

 

這種方式看起來好像可以,實際上是不可取的。因爲jQuery對象永遠都有返回值,所以$("#objID") 總是返回TRUE

 

通過判斷對象是否存在有如下可取方式:

1、  使用普通的js代碼獲取該元素,判斷是否存在

if(document.getElementById('objId')){
	//如果元素存在	
}

 

 

 

 

2、  使用jQuery獲取,判斷該元素的大小(長度),或者將jQuery對象轉爲DOM對象判斷。

	//判斷jQuery對象的長度
	if($('#objId').length>0){

	}
	//將jQuery對象轉換成DOM對象進行判斷
	if($('#objId')[0]){

	}

 

 

 

 

當然,也可以通過try-catch捕獲異常的方式來處理,不過這種方式用來處理對象是否存在就不太好了。

 

還有一種是在頁面編譯期間出現錯誤的情況,頁面代碼本身沒有問題,用戶的過快操作,頁面JS代碼還沒有執行完成就直接轉到其他頁面也會出現這樣的錯誤。這種錯誤拋給用戶是相當不友好的,那麼有沒有辦法去避免呢。下面是一種解決方案,在head部分添加如下代碼:

 

    <SCRIPT type="text/javascript">
    function doNothing(){ return true; } 
    window.onerror = doNothing; 
     </SCRIPT>

 

 

 

這種方案,只有在系統經過充分的測試後纔可以使用。測試的時候,建議把代碼註釋或者直接去掉。

發佈了48 篇原創文章 · 獲贊 2 · 訪問量 9970
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章