红宝书 第17章整理——错误处理

1、try-catch语句

try{
    //可能会导致错误的代码
}
catch{
   //在错误发生时怎么处理
}

对于js来说,catch接收到的是一个包含错误信息的对象,具有一个message属性。  error.message

finally:

可以搭配finally语句,无论有没有发生错误,都会执行finally内的代码

try{
   ......
}
catch{
  ......
}
finally{
   //最后一定执行的内容
}

即使try-catch中有return返回语句,也要先执行finally中的,如果finally中也有return语句,那么就优先执行finally中的return,屏蔽try中的return

注意:

当try-catch语句中发生了错误时,浏览器会认为错误已经被处理了,所以就不会通过自己的机制记录,或者报告错误。这个相当于自定义的错误处理机制。

所以try-catch适用于我们无法控制的错误,例如在使用一个不开源的js库,因为你改不了源码,所以就要try


2、throw抛出错误

单独使用throw:

在遇到throw时,如果没有与try-catch一起使用,那么程序会立即停止。

throw后面可以加任何东西,例如string,布尔值,对象。。。。也可以加错误类型,这样浏览器会以正常错误报告的方式进行记录显示。

throw new Error("something wrong!");
throw new TypeError("the type of this is wrong!");

也可以通过Error原型链,继承添加自己的新错误类型,自己制定name和message

throw语句可以与try-catch语句搭配使用

try
{
     .......
     throw value;     //程序中抛出异常
}
catch(err)
{
     //例外处理程序段,抛出的value在此均为err,内容可以直接拿来用
}

在这种与try-catch配合使用时,程序不会停止。

3、error事件

一般的错误事件只能用DOM0事件来写

window.onerror = function(){
    ........
}
特例:

image也支持error,例如当src中的URL有问题时,会触发error事件,这里的error可以DOM0,DOM2均可

4、常见错误类型

①类型转换错误:

相等操作符:==

这个就是最基本的判断用,但是在js中会自动进行类型转换

5 ==“5”      //true

js会将5转成字符串,然后与“5”比较,结果为true

全等操作符:===

更严格的判断,不会自动做类型转换

5===“5”     //false

不相等:!=

同上==

不全等:!==

同上!==

附:

注意像if这种语句,在进行判断后可能会自动更改数据类型,可能会将其变为布尔值,所以以防万一可以用if(typeof a ==“string”)

②数据类型错误:

此处主要是以防将预料之外的值传给函数,所以要写一些适当的数据类型检测代码

基本类型的值用typeof来检测(参见上面的附内容,if)

对象类型检测直接用instanceof     

例如检测对象是否为数组,则直接   if(a instanceof Array)

③通信错误:

主要涉及与服务器的通信错误,举例:

格式不正确的URL,服务器相应数据不正确

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值