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

執行該函數須要傳遞一個數組類型的參數
首先驗證參數是否是數組,若是不是數組則拋出錯誤

總結:捕獲錯誤的目的爲了防止瀏覽器以默認的行爲處理錯誤,拋出錯誤的目的是能夠獲取詳細具體的錯誤信息

相關文章
相關標籤/搜索