JavaScript如何处理错误

来源:互联网 发布:淘宝的付费流量 编辑:程序博客网 时间:2024/05/22 19:26

1.错误类型:

//RangeError、ReferenceError、TypeError、URIErrortry{someFunction();}catch(error){if(error instanceof TypeError){//处理类型错误}else if(error instanceof ReferenceError){//处理引用错误}else if(error instanceof RangeError){//处理超出范围错误}else if(error instanceof URIError){//处理URI格式错误}else{//处理其他类型错误}}
2.自定义错误类型:

//自定义错误类型function CustomError(message){this.name="CustomError";this.message=message;}
CustomError.prototype=new Error();throw new CustomError("我的信息");
3.抛出错误的时机

function process(values){if(!(values instanceof Array)){throw new Error('process():参数必须是一个数组。');}values.sort();for(var i=0,len=values.length;i<len;i++){if(values[i]>100){return values[i];}}return -1;}
4.避免类型转换错误

//避免在流控制语句中使用非布尔值function concat(str1,str2,str3){var result=str1+str2;if(typeof str3=="string"){result+=str3;}return result;}
5.避免数据类型转换错误

//基本类型的值应该用typeof来检测function getQueryString(url){if(typeof url=="string"){var pos=url.indexOf("?");if(pos>-1){return url.substring(pos+1);}}}//对象的值应该使用instanceof来检测function reverseSort(values){if(values instanceof Array){values.sort();values.reverse();}}
6.避免通信错误

//避免通信错误:对于查询字符串,必须要使用encodeURIComponent()方法function addQueryStringArg(url,name,value){if(url.indexOf('?')==-1){url+='?';}else{url+='&';}url+=encodeURIComponent(name)+'='+encodeURIComponent(value);return url;}
var url="http://www.somedomain.com";var newUrl=addQueryStringArg(url,'redir','http://www.somedomain.com?a=b&c=d');
7.把错误记录到服务器

//把错误记录到服务器function logError(sev,msg){var img=new Image();img.src='log.php?sev='+encodeURIComponent(sev)+'&msg='+encodeURIComponent(msg);}
for(var i=0,len=mods.length;i<len;i++){try{mods[i].init();}catch(ex){logError('非致命错误','模块初始化失败:'+ex.message);}}











0 0
原创粉丝点击