当前位置:嗨网首页>书籍在线阅读

06-try...catch... finally

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.5 try...catch... finally

很多时候,try块中会包含一些对资源的引用,比如,HTTP连接或者文件。不管有没有发生错误,都需要释放这些资源,防止应用程序永远占用着资源。由于try块中可以包含很多语句,任何一条都有可能发生错误,所以在这里释放资源并不安全(因为错误可能发生在释放资源之前,这样就没有机会释放资源了)。同样,在catch中释放资源也不安全,因为catch中的代码只有在发生错误的时候才会执行。这时finally就派上用场了,不管是否发生错误,finally中的代码都会被执行。

由于还没有讲文件处理和HTTP连接,所以这里只是用一个简单的包含了console.log的语句来演示finally的作用:

try {
   console.log("this line is executed...");
  throw new Error("whoops");
    console.log("this line is not...");
} catch(err) {
   console.log("there was an error...");
} finally {
   console.log("...always executed");
   console.log("perform cleanup here");
}

分别在有throw语句和没有throw语句的情况下运行这个例子。大家会发现,两种情况下finally块中的代码均被执行了。