欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js基础——错误处理

程序员文章站 2022-05-31 19:28:30
一:错误捕获 1.try-catch 语句(错误捕获) try{ //这里放置可能出现问题的代码 }catch(error){ //错误发生时执行的代码 console.log(error.name) //打印错误类型 console.log(error.message) //打印错误消息 } 说明 ......

一:错误捕获

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

try{

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

}catch(error){

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

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

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

}

 说明:如果try中的代码出现任何错误,就会立即退出代码执行过程,接着执行catch块。执行过catch块之后,浏览器默认错误已经处理。

 

 

2.finally 字句

try{

}catch(error){

}finally{

}

 说明:无论try里面的语句有没有报错,catch里面的语句有没有执行到,都会执行finally语句

例:

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

 

 

3.错误类型

  error:基类型,所有错误都继承该类型

  evalerror:使用eval()函数(该函数可以执行js代码语句)异常时候抛出。通常是没有直接调用该函数会导致该错误

  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;
};

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

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