1. 程式人生 > >Javascript的異常處理介紹

Javascript的異常處理介紹

1、錯誤報告、錯誤處理以及程式碼除錯,一直被認為是JavaScript的弱項,直到ECMAScript3和ECMAScript4的退出才得到改善。在ECMAScript中將JS的錯誤分為語法錯誤(ERROR)和執行期錯誤(Exception)。

2、不同的瀏覽器對於異常的處理策略不一樣,下面列出了一些常用瀏覽器對於異常的處理以及一些操作方法:
   瀏覽器型別       處理方法       備註說明   
   IE       有的版本會對錯誤進行彈出視窗、有的版本會在狀態列中顯示“頁面出現錯誤”   
   Mozilla       將錯誤資訊記錄的控制檯中   
   Safari               不對異常進行任何處理       可以通過下列方法進行處理:
  A、開啟一個命令終端
  B、執行命令:defaults write com.apple.Safari IncludeDabugMenu 1
  C、重啟Safari瀏覽器
  D、此時瀏覽器中工具欄中已經添加了Debug工具按鈕,單擊該按鈕並選上“Log JavaScript Exceptions”選項
  E、在Application/Utilities下開啟Console.app,現在就可以顯示JS錯誤了   
   Opera       與Mozilla相似       可以通過選擇選單欄的視窗-->特殊外掛-->JavaScript控制檯來開啟   
3、主流的兩種處理異常的方法:onError和try/catch/finally 4、onError是BOM的標準方法,用於捕獲異常並進行處理。該方法啟用時傳遞三個引數:ErrorMessage(錯誤報告訊息)、URL(發生錯誤的URL地址)、LineNumber(錯誤所在行數)。例如: Js程式碼[url=]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif[/url]
1.   onerror = handleErr;   2.   function handleErr(msg, url, l){   3.       txt = "本頁中存在錯誤。\n\n";   4.       txt += "錯誤:" + msg + "\n";   5.       txt += "URL: " + url + "\n";   6.       txt += "行:" + l + "\n\n";   7.       txt += "點選“確定”繼續。\n\n";   8.       alert(txt);   9.       return true
;   10.  }  
不幸的是,onError是標準BOM物件,瀏覽器不同支援的不同,如Safari就不支援該模型方法。 5、try/catch/finally結構,catch捕獲的是ExceptionError物件,該物件有兩個屬性,Name(Error物件的型別)、Message(錯誤資訊)。與Java相比,JS的try/catch不支援一次catch多個異常,但是可以巢狀catch。使用者也可以使用throw來丟擲自己的異常。例如: Js程式碼[url=]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif[/url] 1.   try {    2.       fo.bar();    3.   }catch (e) {    4.       alert(e.name + ": " + e.message);    5.   }   
6、到目前為止我們常接觸到的異常包括: EvalError:用eval()函式發生異常時丟擲 RangeError:數值超出相應範圍時觸發 ReferenceError:找不到物件的情況下 SyntaxError:把語法錯誤的JavaScript字串傳入eval()函式 TypeError:變數中儲存著意外的型別時,或訪問不存在的方法時

URIError:使用encodeURI()或decodeURI(),而URI格式不正確時

原文地址:http://www.jz-net.cn/forum.php?mod=viewthread&tid=12414&extra=page%3D1