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

JavaScript处理错误

2017-01-03 21:59 459 查看
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.}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: