#### 為什么要錯誤處理
1. 良好的錯誤處理機制可以讓開發者以及用戶得到良好的反饋,不至于驚惶失措
2. 捕獲錯誤的目的是為了避免瀏覽器以默認的行為去處理,瀏覽器當遇到try catch語句,語句內發生錯誤時,瀏覽器會認為程序已經處理,所以不去處理
3. 拋出錯誤的目的是為了讓用戶知道錯誤引起的具體原因
#### JS常見錯誤來源
1. 未充分檢測數據類型,在函數中最為常見
2. AJAX異步數據請求及響應中發生的數據錯誤
#### 后臺如需要收集前端錯誤日志
1. 可使用img.src發送請求,避免跨域,因為服務端可以收集多端的錯誤日志
2. 在catch中均調用logError接口,接具體的錯誤信息模塊、錯誤等級等發送給到后臺
#### JS錯誤處理,避免瀏覽器處理錯誤
1. try catch
2. window.error && 異步error事件
3. 查找錯誤,可以觀察函數的調用堆棧,堆棧調用是后進先出( LIFO ) last in, first out
```
try {
//可能發生錯誤的代碼
const a \= 10
a \= 20
return 10
} catch (e) {
//e為錯誤對象,message屬性包含錯誤信息
//在錯誤發生時如何處理
console.log(e.message)
return 20
} finally {
//finally語句在try\\catch內執行,它都會執行,包括return都會忽略,最終返回30
//添加了finally語句,catch即變成可選的
console.log('finally')
return 30
}
```
#### JS拋出異常
1. throw:字符串 || 對象
2. throw '分子不能為0'