#### 为什么要错误处理
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'