2021-05-11

目录

阻止浏览器对错误作出处理的方式有:try/catch和error事件

try/catch:

error事件:

通过分析代码提前预测可能发生的错误

类型转换错误

数据类型错误

通信错误


阻止浏览器对错误作出处理的方式有:try/catch和error事件

try/catch:

任何可能出错的代码放在try中,处理错误的代码放在catch中。

try和catch块无法阻止finally块执行,包括return语句,在finally块之前的return不会执行。

与try/catch对应的一个机制是throw操作符,用于在任何时候自定义错误。throw操作符必须有一个值,但是值的类型不限。使用了throw之后,程序立即停止执行,除非try/catch捕获了抛出的错误。

error事件:

任何没有被try/catch语句处理的错误都会在window对象上触发error事件,onerror事件处理程序传入的不是event对象,而是三个参数:错误消息、发生错误的URL、行号。尽量使用try/catch来捕获错误,不要用到onerror这最后一道防线。

window.onerror=(message,url,line)=>{
  console.log(message);
  return false;   //阻止浏览器默认报告错误的行为
}

通过分析代码提前预测可能发生的错误

常见的错误类型有:类型转换错误、数据类型错误、通信错误

类型转换错误

尽量使用严格相等(===)和严格不相等(!==)来避免

数据类型错误

js是松散类型的,需要开发者自己检查数据类型。一般来说,原始类型的值用typeof检测,对象值用instanceof检测。根据函数的用法,不一定要检查每个参数的类型,但是对外的API都应该作数据类型检查。

通信错误

例如:URL格式或者发送数据的格式不正确。可以通过encodeURIComponent()编码来纠正。可以自行封装一个函数:

function addQueryStringArg(url,name,value){
  if(url.indexOf("?")==-1){
    url+="?";
  }else{
    url+="&";
  }
  url+='${encodeURIComponent(name)=${encodeURIComponent(value)}}';
  return url;
}

const url="http://www.somdomain.com";
const newurl=addQueryStringArg(url,"redir","http://www.someotherdomain.com?a=b&c=d");
console.log(newurl);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值