在JavaScript可以使用try...catch来进行异常处理。js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好)
在未申明或初始化的情况下使用变量
alert(e);//系统报错,下面语句不执行 alert('hello');
改进
try{ alert(e); //其他语句 }catch(e) { alert(e.message); } alert('hello');
当try{}模块中出现异常时,立马跳转到catch(e){}模块 异常被异常处理对象e接管。所以“其他语句”部分也不会被执行。
由此可见异常处理机制不是为了解决错误,而是为了避免错误给其他代码造成影响。
不用异常处理也可以
if(window.a){ alert(a); } alert('hello');
此处代码原理,会在后续课程中讲解
相对于异常处理的有点是代码简洁,缺点是无法看到错误信息,程雪可读性差。
finally
无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
try{ alert(e); }catch(e) { alert(e.message); }finally { alert('我一定会出现'); }
finally语句一般用来回收内存等收尾工作。
3.存在的问题
try{
setTimeout(function () {
alert(a);
},100);
}catch(e) {
alert(e.message);
}finally {
alert('我一定会出现');
}
alert('hello');