JavaScript如何处理错误

1.错误类型:

//RangeError、ReferenceError、TypeError、URIError
try{
	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);
	}
}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值