本文實例總結了javascript程式設計異常處理的方法。分享給大家參考,具體如下:
前言:在前一篇《asp.net開發中常見公共捕獲異常方式總結》,我們整理總結了asp.net服務端的異常處理。這篇接著前文,簡單總結並討論javascript在客戶端的異常處理。這樣asp.net的服務端和客戶端異常處理我們就都有了初步的認知。
1、煩人的腳本錯誤
樓豬常裝13,但普遍都沒有深度。偶然艱難地看懂了一段英文,終於可以深沉地再裝一回:
When browsing Web pages on the internet, we all have seen a JavaScript alert box telling us there is a runtime error and asking "Do you wish to debug?". Error message like this may be useful for atpers . When users see errors, they often leave the Web page.
上面這段話,哼哼,看不懂了吧? nc樓豬優雅且粗暴地理解一下就是,打開一個網頁,我們都不時碰到過網頁彈出腳步錯誤並詢問“是否要調試?”這種sb問題。煩不煩啊,正常用戶常常會習慣性地選擇右上紅叉,但是這種提示訊息可能對開發人員就tmd很有用。由此可見,我kao,開發人員不正常? !看來樓豬理解有誤。其實您不難看出,原文要告訴我們的最終意圖應該是,網頁裡出現腳本錯誤很要命,用戶體驗不好,白白「嚇跑」一批潛在用戶。
2、如何處理腳本錯誤
在js中,我們通常也是透過try...catch 來捕捉並處理異常。
try { //Run some code here } catch(e) { //Handle errors here }
在實際程式碼中,我們可能會這麼寫:
function test(){ var txt=""; try{ alert(aaa);//aaa是未声明的变量 } catch(e){ txt="There was an error on this page.\n\n"; txt+="Error message: " + e.message + "\n\n"; txt+="Error description: " + e.description + "\n\n"; txt+="Error name: " + e.name + "\n\n"; //alert(txt);//正式平台上可能需要注释掉该行 } }
還有一種比較通用的做法就是,給window物件的onerror事件註冊通用處理方法,並將下面的程式碼置於頁面的
節內:window.onerror=function(){ return true; }
上面這種方式的好處是頁面裡寫一次,就不會彈出惱人的腳本錯誤,有點全局處理的意思。對於開發人員,這種寫法可能會隱藏潛在的腳本錯誤而不被發現,所以測試的時候需要註解掉上面的函數。
3、javascript裡的Error
(1)、Error物件的常用屬性
在我們捕獲異常的時候,通常都會在catch處拋出一個Error物件的實例e,e的幾個常用屬性如下:
屬性 說明
description 且有異常的描述資訊
message 且異常的描述資訊
name 例外型態
number 且獨特的異常代號
在實際開發中,通常都會提示給開發人員message和name訊息,以便有針對性地處理異常。
(2)、Error物件的型別
透過(1)中的name屬性我們可以查看到異常類型。在js中,有以下幾種常見異常類型:
TypeError : 遇到意外的類型時引發,例如未宣告的變數等;
SyntaxError : 解析js程式碼時其中的語法錯誤引發,例如服務端註冊腳步,少一個括號或引號等;
ReferenceError : 使用無效的引用時引發此異常;
EvalError : 在錯誤的呼叫eval函數時引發;
RangeError : 在一個數字型變數的值超出了其範圍時引發;
URIError : 錯誤地使用encodeURI()或decodeURI()函數時引發。
在實際的開發中,針對不同類型的異常作出不同的異常處理,有利於我們有效地發現問題和提高使用者體驗。
希望本文所述對大家JavaScript程式設計有所幫助。