JavaScript的錯誤簡易處理

調試JavaScript着實是一件令人頭痛的事情,但現在有很多工具讓調試工作更方便和準確的發現錯誤信息。好的錯誤處理技術可以讓腳本的開發、調試和部署更流暢。曾經,javascript總是因爲會出現奇怪的令人困惑的錯誤消息而知名,調試這種信息確實是一段難熬的經歷。以下是解決JavaScript錯誤的一些小方法:

 

1. try-catch

ECMA-262第3版引入了try-catch語句,基本的語法如下所示:

try {

}

catch(error) {

}

如果try塊中的任何代碼發生錯誤,就會立即執行catch塊。此時,catch塊會接收到一個包含錯誤信息的對象。即使不使用這個錯誤對象,也要起個名字,對象中包含的實際信息因瀏覽器而異,但共同的是一個保存錯誤消息的message屬性,ECMA-262還規定了一個保存錯誤類型的name屬性,所有瀏覽器都支持這個屬性(Opera 9之前的版本除外)。

 

2. finally

雖然在try-catch塊中是可選的,但finally子句一經用,無論如何都會執行,甚至return語句都不會阻止,例如:

function test() {

  try{

   return 1;

  }

  catch(error) {

   return 2;

  }

 finally {

   return 3;

  }

}

 

3. 錯誤類型

每種錯誤都有對應的錯誤類型,而當錯誤發生時,就會拋出相應類型的錯誤對象,ECMA-262定義了7種錯誤類型:

1) Error: 基類型。

2) EvalError: 使用eval()函數發生異常時拋出。

3) RangeError: 數值超出相應範圍時拋出。

4) ReferenceError: 找不到對象時拋出。

5) SyntaxError: 使用eval()函數中的字符串有語法錯誤時拋出。

6) TypeError: 在變量中保存意外類型或訪問不存在的方法時拋出。

7) URIError: 使用encodeURI或decodeURI()中URI格式不正確時拋出。

 

4. 拋出錯誤

與try-catch相配的還有一個throw操作符,用於拋出自定義錯誤。拋出錯誤時,必須給throw操作符指定一個值,這個值的類型沒有要求,例如:

throw 123;

throw "Hello World!";

在遇到throw操作符時,代碼會立即停止執行。

 

5. 錯誤事件

沒有通過try-catch處理的錯誤都會觸發window對象的error事件。任何瀏覽器中,onerror事件處理程序都不會創建event對象,但它可以接受3個參數:錯誤消息、錯誤所在的URL和行號。只要發生錯誤,無論是不是瀏覽器生成的,都會觸發error事件,並執行這個事件處理程序,如果在事件處理程序中返回false,可以阻止瀏覽器報告錯誤的默認行爲,例如:

window.onerror = function(message, url,line) {

 alert(message);

  returnfalse;

}

圖像也支持error事件,只要圖像的src屬性中的URL不能返回可以被識別的圖像格式,就會觸發error事件。

 

本文爲Anyforweb技術分享博客,需要了解網站建設相關,請訪問anyforweb.com。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章