Error对象

概念

    error,指程序中的非正常运行状态,在其他编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。

    ECMAScript定义了六种类型的错误。除此之外,还可以使用Error构造方法创建自定义的Error对象,并使用throw语句抛出该对象。

六种错误:

  • ReferenceError:引用一个不存在的变量时发生的错误或者将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。

在这里插入图片描述

  • TypeError:当变量或参数不是预期类型时发生的错误,比如对字符串、布尔值、数值等原始类型的值使用new命令就会抛出这种错误。

在这里插入图片描述

  • RangeError:当一个值超出有效范围时发生的错误,主要有数组长度为负数、number对象的方法参数超出范围、函数堆栈超过最大值。

在这里插入图片描述

  • SyntaxError:解析代码时发生的语法错误,比如变量名错误、缺少括号等。

在这里插入图片描述

  • EvalError:eval函数没有被正确执行时抛出此错误,该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容才继续保留。

  • URIError:当URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI、decodeURI、encodeURIComponent、encodeURIComponent、escape、unescape这六个函数。

错误处理

即使程序发生错误,也保证不异常中断的机制。

try{
    可能发生错误的代码
}catch(err){
    只有发生错误时才执行的代码
}finally{
    无论是否出错,肯定都要执行的代码
}

:使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;
在try中,尽量少的包含可能出错的代码;
无法提前预知错误类型的错误,必须用try catch捕获;
finally可以省略;

抛出自定义错误

    throw语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。

function sum(...number){
  var isNum = number.every( v => !isNaN(v));
    if(isNum){
        return eval(number.join("+"));        //数组求和
  }else{
      throw new Error("参数必须是数字或数字字符串!");  
  }
}
console.log(sum(1,2,3));     //6
console.log(sum(1,2,'3'));   //6
console.log(sum(1,2,'a3'));  //报错! Error: 参数必须是数字或数字字符串!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值