JavaScript编译过程中8种抛错

  1. Error:是基类型,其他错误类型继承该类型。所有错误类型都共享相同的属性(所有错误对象上的方法都是这个默认类型定义的方法),浏览器很少抛出Error类型的错误,该类型主要用于开发者抛出自定义错误。例如promise中的catch拦截器拦截Error。

new Promise(function(resolve,reject){

  reject('操作失败') })

.then(function(result){

  console.log(result)

})

.catch(function(error){

  console.log(error)

})

2. InternalError类型的错误会在底层JavaScript引擎抛出异常时由浏览器抛出。例如递归过多导致了栈溢出。这个类型并不是代码中通常要处理的错误,如果真的发生了,很可能代码哪里弄错有危险了。

3. EvalError类型的错误会在使用Eval()函数发生异常时抛出,基本上只要不把eval()当成函数调用就会抛出该错误,不同浏览器可能抛出的还并不同。

4. RangeError会在数值越界时抛错。例如,定义数组时候如果设置了并不支持的长度,如-20或者Number.MAX_VALUE,就会抛出该错。

截屏2023-11-18 11.31.39.png

5. ReferenceError会在找不到对象时抛出。(这就是著名的'Object expected'浏览器错误的原因),这种错误经常是由访问不存在的变量导致的。 例如下面:在x没有提前声明时会抛出错误。

6. SyntaxError经常在给eval()传入的字符串包含JavaScript语法错误时发生,比如下面:

截屏2023-11-18 11.41.18.png

在eval()外部很少会用到SyntaxError,这是因为JavaScript中的语法错误会导致代码无法执行。

7. TypeError主要发生在变量不是预期类型,或者访问不存在的方法时。很多原因可能导致这种错误,尤其是在使用类型特定的操作而变量类型不对时。例如:

截屏2023-11-18 11.48.18.png

在给参数传参之前没有验证其类型的情况下,类型错误频繁发生。

8. URIEError只会在使用encodeURI()或decodeURI()但传入了格式错误的URI时发生。但是非常罕见,因为上面这两个函数非常稳健。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值