您的位置:首页 > Web前端 > JavaScript

JavaScript如何处理错误

2016-06-10 21:25 471 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript