js基础——错误处理

一:错误捕获javascript

1.try-catch 语句(错误捕获)java

try{

  //这里放置可能出现问题的代码

}catch(error){

  //错误发生时执行的代码

  console.log(error.name)    //打印错误类型

  console.log(error.message)  //打印错误消息

}

 说明:若是try中的代码出现任何错误,就会当即退出代码执行过程,接着执行catch块。执行过catch块以后,浏览器默认错误已经处理。数组

 

 

2.finally 字句浏览器

try{

}catch(error){

}finally{

}

 说明:不管try里面的语句有没有报错,catch里面的语句有没有执行到,都会执行finally语句函数

例:this

function test(){
    try{
          return 1
    }catch(error){
         return 2 
    }finally{
         return 0  
    }
}
执行test函数,始终会返回0 由于最终都会执行finally块。

 

 

3.错误类型prototype

  Error:基类型,全部错误都继承该类型对象

  EvalError:使用eval()函数(该函数能够执行js代码语句)异常时候抛出。一般是没有直接调用该函数会致使该错误blog

  RangeError:数值超出相应范围触发   例如:定义一个长度为 -20  位的数组   var array = new Array(-20)继承

  ReferenceError:找不到对象时触发  例如:var obj = x  在变量x未定义的状况下 抛出错误

  SyntaxError:传入eval()函数的代码出现错误时抛出

  TypeError:最多见,执行特定类型的操做时,变量的类型不符合要求致使   例如:访问不存在的方法、变量中保存着意外的类型

 

总结:何时试用try-catch语句捕获错误?

  一般在大型的项目中,或者使用别人的库,源代码不能修改  处理那些咱们没法控制的错误。

  当你明确本身的代码在什么时候何地会出现什么错误,使用try-catch语句就不太合适了

 

 

 

二:错误抛出

1.throw    使用throw 操做符代码会当即中止执行,除非使用try-catch捕获错误

基本语法  throw new Error('您要自定义的错误信息')    throw new TypeError()...................

自定义错误类型

function MyError(message){
    this.name = MyError
    this.message = message
}

MyError.prototype = new Error()   //继承Error  由于Error是全部错误类型的基类

使用:throw new MyError('我本身定义的错误类型')  

完整案例:

function test(array){
	if(!(array instanceof Array)){
		throw new Error('参数不是数组')
	}
	array.sort();
	for(var i = 0;i<array.length;i++){
		if(array[i]>100){
			return array[i];
		}
	}
        return -1;
};

执行该函数须要传递一个数组类型的参数
首先验证参数是否是数组,若是不是数组则抛出错误

总结:捕获错误的目的为了防止浏览器以默认的行为处理错误,抛出错误的目的是能够获取详细具体的错误信息

相关文章
相关标签/搜索