Error 對象屬性與方法


Error對象

在 JavaScript 中, Error 對象用於表示程序非正常運行狀態。除了繼承自 Object 的一些屬性和方法外,Error 對象本身沒有任何自定義屬性和方法。Error對象只做一件事,就是在程序非正常運行狀態時拋出一個信息,用以提醒開發者或使用者程序出錯或異常。
創建一個 Error 對象的方法:
  • throw new Error(msg)
  • var err = Error(msg)
  • var err = new Error(msg)

 

Error.prototype 對象屬性

Error 實例屬性:

1.Error.prototype.name:設置或返回一個錯誤名。

2.Error.prototype.message:設置或返回一個錯誤信息。

try{
    throw new Error('發生了一個異常')
}catch(err){
    console.log('err:',err)// err: Error: 發生了一個異常
    console.log('err name:', err.name)// "err name: Error"
    console.log('err message:', err.message)// "err message: 發生了一個異常"
}

 

JS 中其他錯誤對象

除了Error對象外,JS 的本地對象中還有其他類型的錯誤對象,並且這些錯誤對象都可以通過構造函數創建其實例。這些錯誤對象會在特定情況下拋出對應的錯誤信息,除Error外的6種錯誤對象:

1.EvalError :Eval錯誤,全局函數eval()函數錯誤時觸發(現在Eval 錯誤都會拋出 SyntaxError )。

創建:new EvalError(msg)
示例:

try{
    throw new EvalError('一個EvalError信息')
}catch(err){
    console.log('err:',err)// err: EvalError: 一個EvalError信息
    console.log('err name:', err.name)// "err name: EvalError"
    console.log('err message:', err.message)// "err message: 一個EvalError信息"
}

 

2.URIError : URI錯誤,全局URI函數錯誤時觸發。

參建:new URIError(msg)

// 系統拋出 URIError
try{
    decodeURIComponent("%")
}catch(err){
    console.log('err:',err)// "err: URIError: URI malformed"
    console.log('err name:', err.name)// "err name: URIError"
    console.log('err message:', err.message)// "err message: URI malformed"
}

// 自行創建
try{
    throw new URIError('一個 URIError 信息')
}catch(err){
    console.log('err:',err)// "err: URIError: 一個 URIError 信息"
    console.log('err name:', err.name)// "err name: URIError"
    console.log('err message:', err.message)// "err message: 一個 URIError 信息"
}

 

3.ReferenceError : 引用錯誤,引用未定義變量時觸發。

// 系統拋出 ReferenceError
try {
  und.er()
} catch (err) {
  console.log('err:',err)// "err: ReferenceError: und is not defined"
  console.log('err name:', err.name)// "err name: ReferenceError"
  console.log('err message:', err.message)// "err message: und is not defined"
}

// 自行創建
try{
    throw new ReferenceError('一個 ReferenceError 信息')
}catch(err){
    console.log('err:',err)// "err: ReferenceError: 一個 ReferenceError 信息"
    console.log('err name:', err.name)// "err name: ReferenceError"
    console.log('err message:', err.message)// "err message: 一個 ReferenceError 信息"
}

 

4.RangeError : 范圍錯誤,值超出有效范圍時觸發。

// 系統拋出 RangeError
try{
     num.toPrecision(101);
}catch(err){
    console.log('err:',err)// "err: RangeError: toPrecision() argument must be between 1 and 100"
    console.log('err name:', err.name)// "err name: RangeError"
    console.log('err message:', err.message)// "err message: toPrecision() argument must be between 1 and 100"
}

// 自行創建
try{
    throw new RangeError('一個 RangeError 信息')
}catch(err){
    console.log('err:',err)// "err: RangeError: 一個 RangeError 信息"
    console.log('err name:', err.name)// "err name: RangeError"
    console.log('err message:', err.message)// "err message: 一個 RangeError 信息"
}

 

5.SyntaxError : 語法錯誤,語法錯誤時觸發。

// 系統拋出 SyntaxError
try{
    eval("console.log('Hello)");
}catch(err){
    console.log('err:',err)// "err: SyntaxError: Invalid or unexpected token"
    console.log('err name:', err.name)// "err name: SyntaxError"
    console.log('err message:', err.message)// "err message: Invalid or unexpected token"
}

// 自行創建
try{
    throw new SyntaxError('一個 SyntaxError 信息')
}catch(err){
    console.log('err:',err)// "err: SyntaxError: 一個 SyntaxError 信息"
    console.log('err name:', err.name)// "err name: SyntaxError"
    console.log('err message:', err.message)// "err message: 一個 SyntaxError 信息"
}

 

6.TypeError : 類型錯誤,值的數據類型錯誤時觸發。

// 系統拋出 TypeError
try {
  var str = "er"
  str.er();
} catch (err) {
  console.log('err:',err)// "err: TypeError: str.er is not a function"
  console.log('err name:', err.name)// "err name: TypeError"
  console.log('err message:', err.message)// "err message: str.er is not a function"
}

// 自行創建
try{
    throw new TypeError('一個 TypeError 信息')
}catch(err){
    console.log('err:',err)// "err: TypeError: 一個 TypeError 信息"
    console.log('err name:', err.name)// "err name: TypeError"
    console.log('err message:', err.message)// "err message: 一個 TypeError 信息"
}

 

 

JavaScript 中的三大對象 (本地對象、內置對象、 宿主對象)

本地對象

 

內置對象

 

宿主對象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM