1. 程式人生 > >javascript錯誤類型

javascript錯誤類型

編碼 item uri name eval() val row 導致 fun

ECMA-262 定義了下列 7 種錯誤類型,簡單說明如下:

  1. Error:普通異常。通常與 throw 語句和 try/catch 語句一起使用。 利用屬性 name 可以聲明或了 解異常的類型,利用 message 屬性可以設置和讀取異常的詳細信息。
  2. EvalError: 在不正確使用 eval()方法時拋出。
  3. SyntaxError:拋出語法錯誤。
  4. RangeError:在數字超出合法範圍時拋出。
  5. ReferenceError:在讀取不存在的變量時拋出 。
  6. TypeError:當一個值的類型錯誤時拋出該異常。
  7. URLError:由 URL 的編碼和解碼方法拋出。

其中 Error 是基類,其他錯誤類型都繼承自該類型。因此,所有錯誤類型共享了一組相同的屬性, 錯誤對象中的方法全是默認的對象方法。 Error 類型的錯誤很少見,如果有也是瀏覽器拋出的,這個基類 型的主要目的是供開發人員拋出自定義錯誤。

EvalError 類型的錯誤會在使用 eval()函數發生異常時被拋出。

//如果沒有把 eval()當成函數調用,就會拋出該類型錯誤。
new eval();         //拋出 EvalError
eval=foo;           //拋出 EvalError

RangeError 類型的錯誤會在數值超出相應範圍時觸發。 JavaScript 中經常會出現這種範圍錯誤。

//在定義數組時,如果指定了數組不支持的項數,如-20 或 Number.MAX VALUE,就會 觸發這種錯誤。
var itemsl = new Array(-20);                 //拋出RangeError
var itemsl = new Array (Number.MAX_VALUE); //拋出RangeError

在找不到對象的情況下,會發生 ReferenceError。

//在訪問不存在的變量時,就會發生這種錯誤。
var obj = x;          //在 x 並未聲明的情況下拋出 ReferenceError

SyntaxError 表示語法類型錯誤, 當把語法錯誤的 JavaScript 字符串傳入 eval()函數時,就會導致此類錯誤。

eval ("a ++ b")         //拋出 SyntaxError

Type Error類型在 JavaScript 中會經常用到,在變量中保存著意外的類型時,或者在訪問不存在的方法時,都會導致這種錯誤。錯誤的原因雖然多種多樣,但歸根結底還是由於在執行特定類型的操作時, 變量的類型並不符合要求所致。

//最常發生類型錯誤的情況,就是傳遞給函數的參數事先未經檢查,結果傳入類型與預期類型不相符。 
var o = new 10;                             //拋出 TypeError 
alert ("name" in true);                     //拋出 TypeError 
Function.prototype.toString.call (’name ’); //拋出 TypeError

在使用 encodeURL()或 decodeURL()時,如果 URL 格式不正確,就會導致 URIError 錯誤。這種錯誤也很少見,因為這兩個函數的容錯性非常高。

javascript錯誤類型