JavaScript錯誤對象

您將在JavaScript中找到各種錯誤對象

JavaScript gives us 8 錯誤對象,根據錯誤類型在try / catch表達式中引發:

  • Error
  • EvalError
  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError
  • URIError

讓我們分析其中的每一個。

Error

這是一般錯誤,也是所有其他錯誤對象繼承的錯誤。您將永遠不會看到的實例Error直接,而是JavaScript觸發了上面列出的其他錯誤之一,這些錯誤繼承自Error

它包含2個屬性:

  • message:錯誤描述,易於理解的消息,應解釋發生了什麼錯誤
  • name:發生錯誤的類型(假設特定錯誤對象名稱的值,例如,TypeError或者SyntaxError

並只提供一種方法toString(),它負責根據錯誤生成有意義的字符串,該字符串可用於將其打印到屏幕上。

EvalError

此錯誤是在現代JavaScript中定義的,但實際上從未由JavaScript拋出,並且出於兼容性目的而保留。它是在ECMAScript 3中定義的,但是自ECMAScript 5.1開始,它就沒有出現在標準中。

它用來表示全局功能eval()用法不正確,其定義不兼容。

RangeError

一種RangeError當數字值不在其允許值範圍內時將觸發。

最簡單的示例是將數組長度設置為負值時:

[].length = -1 //RangeError: Invalid array length

或將其設置為大於4294967295

[].length = 4294967295 //4294967295
[].length = 4294967296 //RangeError: Invalid array length

(此幻數在JavaScript規範中指定為32位無符號整數的最大範圍,等效於Math.pow(2, 32) - 1

以下是您可以在野外發現的最常見範圍錯誤:

ReferenceError

一種ReferenceError表示已檢測到無效的參考值:JavaScript程序正在嘗試讀取不存在的變量。

dog //ReferenceError: dog is not defined
dog = 2 //ReferenceError: dog is not defined

請注意,以上聲明將創建一個dog全局對像上的變量(如果未運行)嚴格模式

以下是您可以在野外發現的最常見參考錯誤:

SyntaxError

一種SyntaxError在程序中發現語法錯誤時引發。

以下是一些生成語法錯誤的代碼示例。

沒有名稱的函數語句:

function() {
  return 'Hi!'
}
//SyntaxError: function statement requires a name

對象屬性定義後缺少逗號:

const dog = {
  name: 'Roger'
  age: 5
}
//SyntaxError: missing } after property list

以下是您可以在野外發現的最常見的語法錯誤:

TypeError

一種TypeError當值的類型與預期的類型不同時,會發生這種情況。

最簡單的示例是嘗試調用數字:

1() //TypeError: 1 is not a function

以下是您可以在野外發現的最常見的類型錯誤:

URIError

調用與URI一起使用的全局函數之一時,會引發此錯誤:

  • decodeURI()
  • decodeURIComponent()
  • encodeURI()
  • encodeURIComponent()

並傳遞無效的URI。

免費下載我的JavaScript初學者手冊


更多js教程: