欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ruby 異常處理:ensure

 更新時間:2007年11月24日 14:22:03   作者:  
 當一個方法結(jié)束工作時我們也許需要進行清理工作.也許一個打開的文件需要關(guān)閉,緩沖區(qū)的數(shù)據(jù)應清空等等.如果對于每一個方法這里永遠只有一個退出點,我們可以心安理得地將我們的清理代碼放在一個地方并知道它會被執(zhí)行;但一個方法可能從多個地方返回,或者因為異常我們的清理代碼被意外跳過.

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


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

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


這是個笨辦法,當程序增大時,代碼將失去控制,因為我們必須處理每一個 return 和 break,.

為此,我們向"begin...rescue...end"體系中加入了一個關(guān)鍵字 ensure. 無論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,但當它們在同一begin...end域中時, rescue 必須放在 ensure前面.  
 

相關(guān)文章

  • 關(guān)于Ruby on Rails視圖編寫的一些建議

    關(guān)于Ruby on Rails視圖編寫的一些建議

    這篇文章主要介紹了關(guān)于Ruby on Rails視圖編寫的一些建議,有助于團隊協(xié)作時對代碼的調(diào)試工作,需要的朋友可以參考下
    2015-08-08
  • 優(yōu)化Ruby代碼使程序運行速度提高的例子

    優(yōu)化Ruby代碼使程序運行速度提高的例子

    這篇文章主要介紹了優(yōu)化Ruby代碼使程序運行速度提高的例子,文中引用的項目把一個Ruby項目的運行時間從20秒優(yōu)化到1.5秒,效果非常明顯,需要的朋友可以參考下
    2015-04-04
  • win7下從ruby源代碼編譯安裝的方法

    win7下從ruby源代碼編譯安裝的方法

    下面小編就為大家?guī)硪黄獁in7下從ruby源代碼編譯安裝的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • ruby執(zhí)行周期性任務的三種gem介紹

    ruby執(zhí)行周期性任務的三種gem介紹

    無論是用ruby做系統(tǒng)管理,還是用rails做web開發(fā),都可能遇到周期性任務,它們按照一定時間周期(1小時,2天......)持續(xù)地觸發(fā)。在ruby中,我認為一次性任務使用 sidekiq 來完成是非常方便的,而周期性的任務就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • Ruby下WebDriver的相關(guān)操作指南

    Ruby下WebDriver的相關(guān)操作指南

    這篇文章主要介紹了Ruby下WebDriver的相關(guān)操作指南,同時也介紹了啟動firefox drive加載firebug擴展的方法,需要的朋友可以參考下
    2015-07-07
  • Ruby程序中正則表達式的基本使用教程

    Ruby程序中正則表達式的基本使用教程

    和Python與Perl一樣,Ruby對正則表達式的支持也是相當好的,這里送出整理的Ruby程序中正則表達式的基本使用教程,需要的朋友可以參考下
    2016-05-05
  • ruby 小腳本搞定CVS服務器更換后checkout下來的工程遷移

    ruby 小腳本搞定CVS服務器更換后checkout下來的工程遷移

    CVS換了新的服務器,原來的工程需要更改Server配置,這個東東手工做起來 可是個體力活,寫了一個腳本分發(fā)下來。
    2008-12-12
  • ruby實現(xiàn)的文件自刪除代碼分享

    ruby實現(xiàn)的文件自刪除代碼分享

    這篇文章主要介紹了ruby自刪除代碼分享,本文代碼適用Linux系統(tǒng),Windows系統(tǒng)需要自測一下哈,需要的朋友可以參考下
    2015-01-01
  • Ruby on Rails下的圖像處理入門教程

    Ruby on Rails下的圖像處理入門教程

    這篇文章主要介紹了Ruby on Rails下的圖像處理入門教程,主要講到如何用Rail的ImageMagick庫來壓縮圖片,需要的朋友可以參考下
    2015-04-04
  • 淺析Ruby中的DATA對象

    淺析Ruby中的DATA對象

    這篇文章主要介紹了Ruby中的DATA對象,包括對DATA.read方法的講解等,需要的朋友可以參考下
    2015-05-05

最新評論