1. 程式人生 > >JavaScript的錯誤處理

JavaScript的錯誤處理

encode turn catch 發送 ref blog 一定的 bool typeerror

一、錯誤類型

Error
EvalError
RangeError
ReferenceError
syntaxError 語法錯誤
TypeError
URIError

Error是基類型,其他錯誤類型都繼承自該對象,因此所有的錯誤類型都共享一組相同的屬性。該錯誤類型很少見。

EvalError是使用eval()函數而發生的異常拋出的,當沒有吧eval()當成一個函數使用的時候就會拋出。

RangeError
數值超出一定的範圍會觸發,在找不到對象的時候也會觸發,在未聲明時候去使用變量時候也會觸發

TypeError
類型錯誤,最常見的額類型錯誤就是傳遞給函數的參數事先未檢查

二、try-catch語句

try{
      leaf()
} catch(error){
      console.log(error.message);
}
//leaf is not defined

三、finally

可選的,但是一旦使用,其代碼無論如何都會執行,即使前面使用了return

try{
        return 1;
}catch(error){
        return 2;
}finally{
         return 3;
}

//chrome下報錯了Uncaught SyntaxError: Illegal return statement

四、拋出錯誤 throw操作 

 

在遇到throw符號的時候,代碼會立即執行。僅當try-catch語句捕獲到被拋出的值的時候,代碼才會繼續執行。

 throw new Error(‘something bad hanppened‘);

  

五、Error事件
  任何沒有通過try-catch處理的錯誤都會觸發window對象的error事件。只要發生錯誤,無論是不是瀏覽器生成的,都會觸發error事件,並執行這個事件的處理函數。img的沒有獲得正確的src也會觸發。

六、常見的錯誤類型

  1、類型轉換錯誤

  console.log(1==true) //true
  console.log(1==true) //false

在if()之類的判斷語句中,在執行下一步的時候,會自動的把任何值轉換成布爾值。

方案: 建議使用 === !== 操作符


2、數據類型錯誤

  比如
  null 和undefined 使用點操作
  對非數組的值使用sort()的reversed()等方法

  方案:
  基本類型(undefined null boolean string number)用typeof去檢測;
  對象則用instanceof去檢測(註意array比較特別)

3、通信錯誤
  不正確的使用URL和在服務器響應的數據不正確的時候
  解決,將數據發給服務器應該使用encodeURIComponent()對數據進行編碼。

七、總結

避免瀏覽器響應JavaScript錯誤的方法

  1、在可能發生錯誤的地方使用try-catch語句,這樣有機會以適當的方式對錯誤給出響應,不必沿用瀏覽器的錯誤機制。

  2、是當時會用window.onerror事件處理程序,此方法可以處理try-catch不能處理的所有錯誤。

  3、發生書錯誤的主要原因
類型轉換,
  未充分檢測數據類型
  發送到服務器或從服務器接收的數據有誤

JavaScript的錯誤處理