麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Ruby > 正文

ruby 異常處理:ensure

2020-03-29 12:11:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
 當(dāng)一個(gè)方法結(jié)束工作時(shí)我們也許需要進(jìn)行清理工作.也許一個(gè)打開(kāi)的文件需要關(guān)閉,緩沖區(qū)的數(shù)據(jù)應(yīng)清空等等.如果對(duì)于每一個(gè)方法這里永遠(yuǎn)只有一個(gè)退出點(diǎn),我們可以心安理得地將我們的清理代碼放在一個(gè)地方并知道它會(huì)被執(zhí)行;但一個(gè)方法可能從多個(gè)地方返回,或者因?yàn)楫惓N覀兊那謇泶a被意外跳過(guò).

begin
  file = open("/tmp/some_file", "w")
  # ... write to the file ...
  file.close
end  


上面,如果在我們寫(xiě)文件的時(shí)候發(fā)生異常,文件會(huì)保留打開(kāi).我們也不希望這樣的冗余出現(xiàn):

begin
  file = open("/tmp/some_file", "w")
  # ... write to the file ...
  file.close
rescue
  file.close
  fail # raise an exception
end  


這是個(gè)笨辦法,當(dāng)程序增大時(shí),代碼將失去控制,因?yàn)槲覀儽仨毺幚砻恳粋€(gè) return 和 break,.

為此,我們向"begin...rescue...end"體系中加入了一個(gè)關(guān)鍵字 ensure. 無(wú)論begin塊是否成功,ensure代碼域都將執(zhí)行.

begin
  file = open("/tmp/some_file", "w")
  # ... write to the file ...
rescue
  # ... handle the exceptions ...
ensure
  file.close   # ... and this always happens.
end  


可以只用ensure或只用rescue,但當(dāng)它們?cè)谕籦egin...end域中時(shí), rescue 必須放在 ensure前面.  

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕视频在线播放 | 精品国产一区在线 | 蜜桃久久一区二区三区 | 91av在线免费播放 | 成年人网站国产 | xp123精品视频| 精品一区二区三区欧美 | 久国久产久精永久网页 | 嗯啊羞羞视频 | 久久久www免费看片 亚洲综合视频一区 | 国产亚洲网 | 久久久电影电视剧免费看 | 懂色av懂色aⅴ精彩av | 免费男女乱淫真视频 | 中文字幕www| 久久久久久艹 | 国产亚洲精品久久久久婷婷瑜伽 | 高清国产福利 | 久久久久久久久久久久久久久伊免 | 久久思思爱 | 国产精品亚洲综合一区二区三区 | 免费男女视频 | 日本成人一区二区三区 | 中文字幕亚洲视频 | 精品亚洲网站 | 久久人人97超碰国产公开结果 | 在线免费观看毛片 | 99麻豆久久久国产精品免费 | 国产精品久久久久影院老司 | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | 国产精品午夜性视频 | a级在线 | 中文字幕在线观看成人 | 狠狠干伊人网 | 成人性视频在线 | 国产免费激情视频 | 国内精品久久久久久久久久久久 | 日本成人一区二区 | 美女视频大全网站免费 | 夜夜b | 成片免费观看大全 |