try...catch

try…catch 语句 try…catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。

语法:

try //尝试着执行 try 包含的代码
{
   //在此运行代码
}
catch(err) //如果有错误,执行 catch,e 是异常对象
{
   //在此处理错误
}

注意:try…catch 使用小写字母。大写字母会出错。

// try - catch 特点
    // 1.可以获取错误信息
    // 2.可以避免浏览器控制台报错
    // 3.可以屏蔽错误,继续执行。PS:但继续执行的语句如果和错误的语句有上下文关系,可能会继续报错
    try {
        window.haha();
    } catch (e){  //e表示错误对象
        alert(e.name);  //错误类型
        alert(e.message); // 错误信息
        alert(e);  //错误类型 + 错误信息
    }
trycatch的意义
1可以通过修改代码来拍错的,不需要使用trycatch
2 浏览器兼容性问题,可以通过判断浏览器或者判断是否支持某个属性或方法来判断,不需要使用trycatch

比如,无法修改代码的情况下,可能会发生错误,这个时候用trycatch,比如网络中断了

错误实例:

try{
   alert(innnerWidth);  //w3c
}catch(e){
    alert(document.documentElement.clientWidth) //ie
 }
 //ps: 这样的确能实现兼容性问题,但是逻辑上是不正确的
 //ps:因为innnerWidth不支持的浏览器,可能不一定是ie

PS:常规错误和这种浏览器兼容错误 ,我们都不建议使用 try-catch。因为常规错误可以 修改代码即可解决,浏览器兼容错误,可以通过普通 if 判断即可。并且 try-catch 比一般语 句消耗资源更多 ,负担更大 。所以,在万不得已 ,无法修改代码 ,不能通过普通判断的情况 下才去使用 try-catch,比如后面的 Ajax 技术。

抛出错误

//抛出错误,说明错误我们自己无法解决,就需要把错误爆出,报出。

使用 catch 来处理错误信息,如果处理不了,我们就把它抛出丢掉。抛出错误,其实就 是在浏览器显示一个错误信息,只不过,错误信息可以自定义,更加精确和具体。

try {
  new 10;
} catch (e) {
if (e instanceof TypeError) {
   throw new TypeError('实例化的类型导致错误! '); } else {
   throw new Error('抛出未知错误!'); }
}
//直接中文解释错误信息
PS:IE 浏览器只支持 Error 抛出的错误,其他错误类型不支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值