1. JavaScript中的异常
1.1 所有异常都是Error的子类
```javascript
RefenceError instanceof Error // true;
class CustomError extends Error {}
<a name="fwbSP"></a>### 1.2 error会导致代码不再往下执行```javascriptconsole.log(b);console.log('hello'); // 不被执行
1.3 try catch 可以捕获并消化掉error
try {console.log(b);}catch(err) {const { message, stack } = err;console.log(message); // b is not definedconsole.log(stack); // ReferenceError: b is not defined at javascript-error.html:36}console.log('hello'); // hello
1.4 window.onerror 和 window.addEventListener可以捕获error
注意:错误代码,应该在window.onerror 或 window.addEventListener之后执行,否则捕获不到
window.onerror = function(msg, url, line) {return true; // true 代表已经处理,不会往外再抛出}console.log(b);console.log('hello'); // 不执行
window.onerror = function(msg, url, line) {return false; // false 代表未处理,外再抛出}// 浏览器error输出console.log(b); // Uncaught ReferenceError: b is not defined at javascript-error.html:32console.log('hello'); // 不执行
window.addEventListener('error', err => {const { error: { message, stack } } = err;return true; //不管返回什么,都会被抛出});console.log(b);console.log('hello'); // 不会执行
