JavaScript处理错误

1.错误类型:





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//RangeError、ReferenceError、TypeError、URIError  
02.try{  
03.    someFunction();  
04.}catch(error){  
05.    if(error instanceof TypeError){  
06.        //处理类型错误  
07.    }else if(error instanceof ReferenceError){  
08.        //处理引用错误  
09.    }else if(error instanceof RangeError){  
10.        //处理超出范围错误  
11.    }else if(error instanceof URIError){  
12.        //处理URI格式错误  
13.    }else{  
14.        //处理其他类型错误  
15.    }  
16.}  
2.自定义错误类型:





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//自定义错误类型  
02.function CustomError(message){  
03.    this.name="CustomError";  
04.    this.message=message;  
05.}  



[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.CustomError.prototype=new Error();  
02.throw new CustomError("我的信息");  
3.抛出错误的时机





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.function process(values){  
02.    if(!(values instanceof Array)){  
03.        throw new Error('process():参数必须是一个数组。');  
04.    }  
05.    values.sort();  
06.    for(var i=0,len=values.length;i<len;i++){  
07.        if(values[i]>100){  
08.            return values[i];  
09.        }  
10.    }  
11.    return -1;  
12.}  
4.避免类型转换错误





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//避免在流控制语句中使用非布尔值  
02.function concat(str1,str2,str3){  
03.    var result=str1+str2;  
04.    if(typeof str3=="string"){  
05.        result+=str3;  
06.    }  
07.    return result;  
08.}  
5.避免数据类型转换错误





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//基本类型的值应该用typeof来检测  
02.function getQueryString(url){  
03.    if(typeof url=="string"){  
04.        var pos=url.indexOf("?");  
05.        if(pos>-1){  
06.            return url.substring(pos+1);  
07.        }  
08.    }  
09.}  
10.//对象的值应该使用instanceof来检测  
11.function reverseSort(values){  
12.    if(values instanceof Array){  
13.        values.sort();  
14.        values.reverse();  
15.    }  
16.}  
6.避免通信错误





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//避免通信错误:对于查询字符串,必须要使用encodeURIComponent()方法  
02.function addQueryStringArg(url,name,value){  
03.    if(url.indexOf('?')==-1){  
04.        url+='?';  
05.    }else{  
06.        url+='&';  
07.    }  
08.    url+=encodeURIComponent(name)+'='+encodeURIComponent(value);  
09.    return url;  
10.}  



[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.var url="http://www.somedomain.com";  
02.var newUrl=addQueryStringArg(url,'redir','http://www.somedomain.com?a=b&c=d');  
7.把错误记录到服务器





[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.//把错误记录到服务器  
02.function logError(sev,msg){  
03.    var img=new Image();  
04.    img.src='log.php?sev='+encodeURIComponent(sev)+'&msg='+encodeURIComponent(msg);  
05.}  



[javascript] view plain copy

 在CODE上查看代码片派生到我的代码片01.for(var i=0,len=mods.length;i<len;i++){  
02.    try{  
03.        mods[i].init();  
04.    }catch(ex){  
05.        logError('非致命错误','模块初始化失败:'+ex.message);  
06.    }  
07.}  









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值