Javascript的異常處理介紹
阿新 • • 發佈:2019-01-26
1、錯誤報告、錯誤處理以及程式碼除錯,一直被認為是JavaScript的弱項,直到ECMAScript3和ECMAScript4的退出才得到改善。在ECMAScript中將JS的錯誤分為語法錯誤(ERROR)和執行期錯誤(Exception)。
2、不同的瀏覽器對於異常的處理策略不一樣,下面列出了一些常用瀏覽器對於異常的處理以及一些操作方法:
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:變數中儲存著意外的型別時,或訪問不存在的方法時
2、不同的瀏覽器對於異常的處理策略不一樣,下面列出了一些常用瀏覽器對於異常的處理以及一些操作方法:
不幸的是,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