ES6中Try...Catch....finally 异常捕获
基本语法
/** * * try { * tryCode -- 尝试执行的代码 * } catch(error) { * catchCode -- 捕捉到错误的代码时触发 * } finally { * finallyCode -- 无论走 try/catch 都要执行这里的代码 * } * */
简单案例
try { alert("1"); } catch (error) { alert(error); } finally { alert("Hello, 郑州"); }
复杂案例
var a = 3; try { if (a < 5) { alert("+++++++"); let a = 10000; // throw 的值会传递给 catch throw a; } if (a < 10 && a >= 5) throw "这个数小于10"; if (a < 15 && a >= 10) throw "这个数小于15"; } catch (msg) { alert(msg); }
try catch的缺点
1.try catch耗性能 2.try catch捕获不到异步错误 3.try catch可能会导致报错点更模糊
报错顺序
a.try里面的代码报错的时候,catch里面的代码才会执行,finally里面的代码永远会执行
b.catch和finally里面,正常的代码会从上到下顺序执行
c.如果只是catch里面代码出错,则报catch里面的错误
d.如果catch和finally都出错则会报finally里面的错误
使用场景:
为容易出错的,容易产生兼容问题的代码段加上try..catch。合处理那些我们无法控制的错误,如I/O操作,后端java读取I/O操作比较多比如读数据库,所以用try catch比较多。前端可以用在上传图片或async await同步调接口。
注意:
try catch语句,作为JavaScript中处理异常的一种标准方式。但是在前端js代码中很少看到try catch语句,并不是所以代码都需要加try catch来作得不偿失的“保险”。