javascript权威指南第17章 错误异常处理

function TestTryCatch(){
    try {
        
    } catch (error) {
        //error 类型如下 Error EvalError RangeError ReferenceError
        //SyntaxError TypeError  URIError
        if(error instanceof TypeError){
            
        }else if( error instanceof ReferenceError){

        }else{

        }
    }
    finally{

    }
}

//17.2.2 抛出错误

function process(values){
    if(!(values instanceof Array)){
        throw new Error(‘process():Argument must be an array‘);
    }
    values.sort();

    for(var i=0,len=values.length;i<len;i++){
        if(values[i] >100){
            return values[i];
        }
    }

    return -1;

}

//自定义错误
function CustomError(message)
{
   this.name =‘CustomError‘;
   this.message = message;
}
CustomError.prototype =new Error();


//17.2.3 错误(error)事件
window.onerror =function(message,url,line){
    alert(message);
    return false;
}

//throw new CustomError(‘CustomError‘);

var image = new Image();
image.addEventListener(‘load‘,function(event){
    alert(‘Image loaded‘);
},false);
image.addEventListener(‘error‘,function(event){
    alert(‘Image not laoded‘);
},false);
image.src =‘smilex.gif‘;


//17.2.4 处理错误的策略
//略

//17.2.5 常见的错误类型
function concat(str1,str2,str3){
    var result =str1+str2;
    if( typeof str3 ==‘string‘){
        result +=str3;
    }
    return result;
}
function getQueryString(url){
    if( typeof url ==‘string‘){
        var pos = url.indexOf(‘?‘);
        if(pos>-1){
            return url.substring(pos+1);
        }
    }
}
function reverseSort(values){
    if( typeof values.sort ==‘function‘){
        values.sort();
        values.reverse();
    }
}


//17.2.6 区分致命错误和非致命错误


//17.2.7 把错误记录到服务器

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...