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 中的三大对象 (本地对象、内置对象、 宿主对象)

本地对象

 

内置对象

 

宿主对象

 

posted @ 2020-06-08 11:27  elfpower  阅读(2148)  评论(0编辑  收藏  举报