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 中的三大對象 (本地對象、內置對象、 宿主對象)
本地對象
- Object 對象屬性和方法
- String 對象屬性和方法
- Array 對象屬性和方法
- Date 對象屬性和方法
- Number 對象屬性和方法
- RegExp 對象屬性和方法
- Function 對象屬性和方法
- Boolean 對象屬性和方法
- Error 對象屬性和方法
內置對象
宿主對象